Spec-Zone.ru › C++

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.

См. также

is_copy_constructibleis_trivially_copy_constructibleis_nothrow_copy_constructible
(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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API