const int number{42};
Действительно ли это синтаксис? Я могу найти только примеры, когда инициализаторы курчавых скобок используются для объектов или нетривиальных типов.Унифицированный синтаксис инициализации для базовых типов?
const int number{42};
Действительно ли это синтаксис? Я могу найти только примеры, когда инициализаторы курчавых скобок используются для объектов или нетривиальных типов.Унифицированный синтаксис инициализации для базовых типов?
Простой ответ на ваш вопрос: ДА разрешено и является допустимым синтаксисом.
Вы можете проверить Uniform initialization syntax and semantics по Страуструпом
также добавить, что в соответствии с C++ 98 8,5/13:
Если
T
это скалярный тип, то заявление о форме
T x = { a };
эквивалентно
T x = a;
Хорошо, а как насчет 'T x {a};' как в вопросе OP? – fredoverflow
@FredOverflow: - Да, это тоже разрешено! –
И имеет ли он такую же семантику? – fredoverflow
Зачем искать примеры, когда вы можете просто найти его в стандарте языка? Да, это разрешено. Вот что означает «форма» в «униформе». –
«Единый синтаксис инициализации», ну, * равномерный *. Так что да, это действительно так. –
Ну, я уже использовал его, и он работает так, как ожидалось, но потом кто-то сказал мне, что это недопустимый синтаксис. Поэтому я пошел искать примеры. И вот мы здесь. – hoosierEE