Subobjects with no initialiser (and no default member initialiser) in list initialisation (which is aggregate initialiation in case of A
which is an aggregate) are value initialised (which is zero initialisation in case of int
subobjects). They are not default initialised.
This has been the case before designated initialisers, and it remains the case when you use designated initialisers. Example:
struct A { int x; int y; int z; };
A b0; // default i.e. no initialisation for x,y,z
A b1 {}; // x, y and z are value initialised
A b2 {1}; // y and z are value initialised
A b3 {.x = 1, .z = 2}; // y is value initialised
Same applies to arrays, although there designated initialisers are unfortunately not available in standard C++:
int arr0[3]; // default i.e. no initialisation
int arr1[3] {}; // all are value initialised
int arr2[3] {42}; // all but first are value initialised