Namensräume
Varianten
Aktionen

std::copy_constructible

Von cppreference.com
< cpp‎ | concepts
 
 
 
Definiert in der Header-Datei <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>;
(seit C++20)

Das Konzept copy_constructible ist erfüllt, wenn T ein Lvalue-Referenztyp ist oder wenn es sich um einen move_constructible Objekttyp handelt, bei dem ein Objekt dieses Typs aus einem (möglicherweise konstanten) Lvalue oder einem const-Rvalue dieses Typs in beiden Kontexten der direkten und Kopierinitialisierung mit den üblichen Semantiken konstruiert werden kann (eine Kopie wird mit unverändertem Quellobjekt konstruiert).

[edit] Semantische Anforderungen

Wenn T ein Objekttyp ist, dann wird copy_constructible<T> nur dann modelliert, wenn für

  • v, ein Lvalue vom Typ (möglicherweise const) T oder ein Rvalue vom Typ const T,

die folgenden Bedingungen erfüllt sind

  • Nach der Definition T u = v; ist u gleich v und v wird nicht modifiziert;
  • T(v) ist gleich v und modifiziert v nicht.

[edit] Referenzen

  • C++23 Standard (ISO/IEC 14882:2024)
  • 18.4.14 Concept copy_constructible [concept.copyconstructible]
  • C++20 Standard (ISO/IEC 14882:2020)
  • 18.4.14 Concept copy_constructible [concept.copyconstructible]

[edit] Siehe auch

prüft, ob ein Typ einen Kopierkonstruktor hat
(Klassenvorlage) [bearbeiten]