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, где объект этого типа может быть создан из (возможно const) lvalue или const rvalue этого типа в контекстах прямой и копирующей инициализации с обычной семантикой (копия создается с исходным значением без изменений).
Семантические требования
Если T это тип объекта, то copy_constructible<T> моделируется только если задано
-
v, lvalue типа (возможноconst)Tили rvalue типаconst T,
следующие утверждения верны:
- После определения
T u = v;,uравноvиvне изменяется; -
T(v)равноvи не изменяетv.
См. также
|
(C++11)(C++11)(C++11) | проверяет, имеет ли тип копирующий конструктор (шаблон класса) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/concepts/copy_constructible