std::copy_constructible
Определён в заголовочном файле <concepts> | ||
|---|---|---|
template< class T >
concept copy_constructible =
std::move_constructible<T> &&
std::constructible_from<T, T&> && std::convertible_to<T&, T> &&
std::constructible_from<T, const T&> && std::convertible_to<const T&, T> &&
std::constructible_from<T, const T> && std::convertible_to<const T, T>;
| (начиная с C++20) |
Концепция copy_constructible выполняется, если T является типом ссылки на lvalue либо объектным типом move_constructible, для которого объект этого типа может быть сконструирован из (возможно, константного) lvalue или константного rvalue этого типа как в контексте прямой, так и копирующей инициализации с обычной семантикой (копия создаётся без изменения исходного объекта).
Семантические требования
Если T является объектным типом, то copy_constructible<T> моделируется только в том случае, если для заданного
-
v, lvalue типа (возможно,const)Tили rvalue типаconst T,
выполняются следующие условия:
- После определения
T u = v;,uравноv, аvне изменяется; -
T(v)равноvи не изменяетv.
Ссылки
- Стандарт C++23 (ISO/IEC 14882:2024):
- 18.4.14 Концепция
copy_constructible[concept.copyconstructible] - Стандарт C++20 (ISO/IEC 14882:2020):
- 18.4.14 Концепция
copy_constructible[concept.copyconstructible]
См. также
|
(C++11)(C++11)(C++11) | проверяет, имеет ли тип конструктор копирования (шаблон класса) |
|
(C++26)(C++26)(C++26) | проверяет, имеет ли отражённый тип конструктор копирования (функция) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/concepts/copy_constructible