Because A
is an aggregate type, then given A a{};
aggregate initialization is performed.
Each direct public base, (since C++17)
array element, or non-static class member, in order of array subscript/appearance in the class definition, is copy-initialized from the corresponding clause of the initializer list.
In aggregate initialization, every member or element (if any) will be copy-initialized directly, the constructor is bypassed; so it's delete
ed or not doesn't matter.
Note that explicitly deleted constructors are allowed for aggregate types (since C++11) (until C++20),
no user-provided constructors (explicitly defaulted or deleted constructors are allowed) (since C++11) (until C++17)
no user-provided, inherited, or explicit constructors (explicitly defaulted or deleted constructors are allowed) (since C++17) (until C++20)