Spec-Zone.ru › C++

Именованные требования C++: DefaultConstructible

Указывает, что экземпляр типа можно сконструировать по умолчанию.

Требования

Тип T удовлетворяет требованиям DefaultConstructible, если все следующие утверждения и выражения корректны и имеют указанные эффекты:

Выражение/утверждение Постусловие
T u; Объект u инициализируется по умолчанию.
T u{}; Объект u инициализируется значением или инициализируется агрегатно.
T()

T{}

Временный объект типа T инициализируется значением или инициализируется агрегатно.

Примечания

Для объектов классового типа, не являющихся агрегатами, должен быть определён открытый конструктор по умолчанию (пользовательский или неявно определённый), чтобы тип удовлетворял требованиям DefaultConstructible.

Неконстантные объекты неклассового объектного типа всегда удовлетворяют требованиям DefaultConstructible.

Константные неклассовые типы не удовлетворяют требованиям DefaultConstructible.

Константные типы-агрегаты не удовлетворяют требованиям DefaultConstructible, если хотя бы один из их членов является объектом неклассового типа.

Необъектные типы (функциональные типы, ссылочные типы и тип void, возможно, с квалификаторами cv), а также константные необъектные типы никогда не удовлетворяют требованиям DefaultConstructible.

Отчёты об ошибках

Следующие отчёты об ошибках, изменяющие поведение, были ретроактивно применены к ранее опубликованным стандартам C++.

DR Применён к Поведение согласно опубликованной версии Корректное поведение
LWG 724 C++98 требования DefaultConstructible отсутствовали добавлены
LWG 2170 C++98 инициализация объекта типа, удовлетворяющего требованиям DefaultConstructible, с помощью
пустого списка инициализации могла приводить только к инициализации значением
может также приводить к
агрегатной инициализации

См. также

is_default_constructibleis_trivially_default_constructibleis_nothrow_default_constructible
(C++11)(C++11)(C++11)
проверяет, есть ли у типа конструктор по умолчанию
(шаблон класса)
is_default_constructible_typeis_trivially_default_constructible_typeis_nothrow_default_constructible_type
(C++26)(C++26)(C++26)
проверяет, есть ли у отражённого типа конструктор по умолчанию
(функция)
default_initializable
(C++20)
указывает, что объект типа можно сконструировать по умолчанию
(концепт)

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/named_req/DefaultConstructible

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API