C++ требования по именованным свойствам: DefaultConstructible
Указывает, что экземпляр типа может быть создан по умолчанию.
Требования
Тип T удовлетворяет DefaultConstructible, если
Дано
-
u, произвольный идентификатор.
Следующие выражения должны быть допустимы и иметь указанные эффекты.
| Выражение | Пост-условия |
|---|---|
T u; | Объект u инициализирован по умолчанию. |
T u{}; | Объект u инициализирован по значению или агрегатно. |
T()
| Временный объект типа T инициализирован по значению или агрегатно. |
Примечания
Для объектов неагрегатного класса типа должен быть определен публичный конструктор по умолчанию (пользовательский или неявно определенный) для удовлетворения требования DefaultConstructible.
Непостоянные объекты неклассового типа всегда являются DefaultConstructible.
Постоянные типы, не являющиеся классами, не являются DefaultConstructible.
Постоянные агрегатные типы не являются DefaultConstructible, если какой-либо из их членов является объектом неклассового типа.
Типы, не являющиеся объектами (типы функций, типы ссылок и тип void (возможно, с квалификаторами cv)), а также постоянные типы, не являющиеся объектами, никогда не являются DefaultConstructible.
Отчеты об ошибках
Следующие отчеты об ошибках, изменяющие поведение, были применены ретроактивно к ранее опубликованным стандартам C++.
| DR | Применимо к | Поведение при публикации | Правильное поведение |
|---|---|---|---|
| LWG 724 | C++98 | требования DefaultConstructible отсутствовали | добавлены |
См. также
|
(C++11)(C++11)(C++11) | проверяет, имеет ли тип конструктор по умолчанию (шаблон класса) |
|
(C++20) | определяет, можно ли создать объект типа по умолчанию (концепция) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/named_req/DefaultConstructible