Initializing the list does not give precise control over what is happening. Basically, the committee guessed what the programmer might want to do most likely and assigned the appropriate values.
If you want to have precise control, use listless initialization. To do this, your test file must work definitely.
If you stick to list initialization, then for aggregates I think the current version of the project will do this and apply guaranteed copying of "elision" because they say
If T is a cumulative class, and in the initialization list there is one element of type cv U, where U is T or a class derived from T, the object is initialized from this element (by copy initialization for the copy list, initialization or direct initialization to initialize the direct list )
In addition, you can get what you want in a future edition of the standard or in the resolution of a defect report even for non-units. I believe your class is aggregate, so it should compile. But maybe something is missing for me there.
source share