名稱空間
變體
操作

std::copy_constructible

來自 cppreference.com
< cpp‎ | 概念
定義於標頭檔案 <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 起)

如果 T 是左值引用型別,或者它是 move_constructible 物件型別,並且該型別的物件可以在直接和複製初始化上下文中從該型別的(可能是 const)左值或 const 右值以通常的語義構造(源物件不變地構造一個複製),則概念 copy_constructible 滿足。

[編輯] 語義要求

如果 T 是物件型別,則 copy_constructible<T> 僅在給定以下條件時成立:

  • v,一個 (可能是 const) T 型別的左值或 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]

[編輯] 參閱

檢查型別是否具有複製建構函式
(類模板) [編輯]