Тема полностью разобрана (включая C++26); Мне просто нужно подвести итоги в отношении одного конкретного пункта.
Одно из определений гласит:
...каждое полное выражение, появляющееся в его инициализаторе, является константным выражением.
Что именно подразумевается под «каждым полным выражением, появляющимся в инициализаторе»?
Для пример:
Код: Выделить всё
S obj{A1(), A2(), A3()};
Фактически в процессе инициализации, помимо полного выражения инициализации целевого объекта, возникают и другие полные выражения — это инициализаторы членов данных. Кажется, все складывается; оказывается, в C++11 просто решили написать требования более явно: и полное выражение инициализации целевого объекта, и инициализация всех его полей должны быть константными выражениями.
Однако у меня все еще есть сомнения, потому что там написано "каждое полное выражение в инициализаторе", а не "каждое полное выражение, которое появляется в процессе инициализации".
В общем, я в замешательстве.
Подробнее здесь: https://stackoverflow.com/questions/798 ... nitializer
Мобильная версия