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