C++ именованные требования: CopyConstructible
Указывает, что экземпляр типа может быть скопирован из lvalue выражения.
Требования
Тип T удовлетворяет CopyConstructible, если
- Тип
Tудовлетворяет MoveConstructible, и
Принимая во внимание
-
v, lvalue выражение типаTили const T или rvalue выражение типа const T, -
u, произвольное идентификатор.
Следующие выражения должны быть допустимы и иметь указанные эффекты:
| Выражение | Последующие условия |
|---|---|
T u = v; | Значение u эквивалентно значению v. Значение |
T(v) | Значение T(v) эквивалентно значению v. Значение |
| Выражение | (до C++11) |
Примечания
До C++11 классы, перегружающие оператор&, не были CopyConstructible и поэтому не могли использоваться в стандартных контейнерах. Это решение по проектированию в C++98 (а не ошибка, см. LWG issue 390).
С C++11 стандартная библиотека использует std::addressof всякий раз, когда нужен адрес объекта.
См. также
|
(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/CopyConstructible