а как оно проявляется? Вообще {} проверяют сужающее преобразование
Разные виды инициализации
Не, я понимаю что разные виды, а в чем отличие?
c круглыми скобками, кстати, это объявление функции ведь, а не инициализация?
{} имеет следующие отличия: 1) {} можно применять везде. В том числе и в указании дефолтных значений полей, инициализации статик полей и обычной инициализации 2) {} может использовать конструктор от std::initializer_list с значениями, указанными внутри {}. Яркий пример - std::vector. Это, впрочем, и плюс и минус. 3) {} не допускает применение операторов приведения типа при конструирования типа. То есть, если тип A имеет оператор каста в B, то при () произойдет каст, при {} не скомпилится 4) {} допускает вызов от пустых скобок, в отличии от (), так как () воспринимается компилятором как объявление функции
Поправьте если не так
Ну ещё с С++20 есть инициализация по полям агрегатных типов, она возможна только с {}
Обсуждают сегодня