Описание тега uniform-initialization

Функция C++11, которая позволяет использовать фигурные скобки для инициализации любого типа переменной в любом контексте.

В C++03 есть несколько способов инициализировать переменную, в том числе:

int i;          // uninitialized
int i = int();
int i = 0;
int i = { 0 };
int i(0);
int i();        // declares a function not a variable
int i[] = { 0 };

Эти разные формы инициализации могут иметь разные эффекты в разных контекстах, например, некоторые формы недопустимы для типов классов с explicitконструкторы и другие формы недопустимы для агрегатных типов и в других случаях имеют неожиданную семантику (см. most-vexing-parse). Это приводит к путанице и ошибкам программирования.

В C++11 представлен новый унифицированный синтаксис инициализации с использованием фигурных скобок, который можно использовать вместо различных форм, показанных выше, и действителен для типов классов с конструкторами, объявленными пользователем, а также для агрегатов и фундаментальных типов. В сочетании с новым типом библиотеки,std::initializer_list(см. список-инициализаторов), новый синтаксис также позволяет инициализировать такие типы, как контейнеры, списком значений, которые будут использоваться для заполнения контейнера.

Дополнительные сведения см. В разделах Унифицированный синтаксис и семантика инициализации в FAQ Бьярна Страуструпа по C++11 и Унифицированная инициализация в статье Википедии о C++11.

Связанные теги: list-initialization