Несколько причин, по которым рекомендуется использовать универсальную инициализацию в C++:
- Единый механизм инициализации для всех типов данных. 1 Прямая или копирующая инициализация работают не со всеми типами данных, например, их нельзя использовать для инициализации списка значений. 1 Универсальная инициализация обеспечивает единый механизм для работы со всеми типами данных. 1
- Возможность инициализировать агрегатные и POD-типы. 4 Стандартные и динамически выделяемые контейнеры, а также типы POD можно инициализировать значениями по умолчанию, что раньше было невозможно. 4
- Присвоение значений по умолчанию нестатическим членам данных класса. 4 Эта возможность есть и у синтаксиса инициализатора «=» (=) , но не у синтаксиса с круглыми скобками. 4
- Запрет на неявные сужающие преобразования. 4 При использовании универсальной инициализации, если переменная инициализируется значением другого типа, на этапе компиляции программы генерируется ошибка. 1