Вы ошибаетесь - форма int modern(0)
(с круглыми скобками) была доступна в старых версиях C++ и по-прежнему доступна на C++ 11.
В C++ 11, новая форма использует фигурные скобки, чтобы обеспечить равномерное инициализацию, так что вы говорите
int modern{0};
Основное преимущество этой новой формы является то, что она может быть последовательно использоваться везде. Это дает понять, что вы инициализируете новый объект, а не вызываете функцию или, что еще хуже, declaring one.
Она также обеспечивает синтаксический согласованность с C-стиле («агрегат») STRUCT инициализации формы
struct A
{
int a; int b;
};
A a = { 1, 2 };
Есть также более строгие правила в отношении сужая преобразования числовых типов, когда фигурная скобка форма используется.
Новая функция C++ 11 может сбивать с толку, поскольку она похожа на объявление функции! –
Я думаю, вы хотели сказать 'int modern {0};' – mpark
Это существовало pre-C++ 11. Добавлены фигурные скобки. – chris