std::copy_constructible
Материал из cppreference.com
<tbody>
</tbody>
| Определено в заголовочном файле <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 является левосторонним ссылочным типом, или объектом типа move_constructible, где объект этого типа может быть создан из (возможно константного) lvalue или const rvalue того-же типа как в контексте прямой инициализации, так и в контексте инициализации копированием с обычной семантикой (копия создаётся с неизменным исходным кодом).
Семантические требования
Если T является объектным типом, тогда copy_constructible<T> моделируется только если даны
v, левостороннее значение типа (возможноconst)Tили правостороннее значение типаconst T,
верно следующее:
- После определения
T u = v;,uравноvиvне изменяется; T(v)равноvи не изменяетv.
Смотрите также
(C++11)(C++11)(C++11) |
проверяет, есть ли у типа конструктор копирования (шаблон класса) |