Namensräume
Varianten
Aktionen

std::indirectly_copyable_storable

Von cppreference.com
< cpp‎ | iterator
 
 
Iterator-Bibliothek
Iterator-Konzepte
Iterator-Primitive
Algorithmus-Konzepte und Hilfsprogramme
Indirekte aufrufbare Konzepte
Gemeinsame Algorithmus-Anforderungen
indirectly_copyable_storable
(C++20)  
(C++20)
(C++20)
(C++20)
Dienstprogramme
(C++20)
Iterator-Adapter
Bereichszugriff
(C++11)(C++14)
(C++14)(C++14)  
(C++11)(C++14)
(C++14)(C++14)  
(C++17)(C++20)
(C++17)
(C++17)
 
Definiert in Header <iterator>
template< class In, class Out >

concept indirectly_copyable_storable =
    std::indirectly_copyable<In, Out> &&
    std::indirectly_writable<Out, std::iter_value_t<In>&> &&
    std::indirectly_writable<Out, const std::iter_value_t<In>&> &&
    std::indirectly_writable<Out, std::iter_value_t<In>&&> &&
    std::indirectly_writable<Out, const std::iter_value_t<In>&&> &&
    std::copyable<std::iter_value_t<In>> &&
    std::constructible_from<std::iter_value_t<In>, std::iter_reference_t<In>> &&

    std::assignable_from<std::iter_value_t<In>&, std::iter_reference_t<In>>;
(seit C++20)

Das Konzept indirectly_copyable_storable spezifiziert die Beziehung zwischen einem indirectly_readable Typ und einem indirectly_writable Typ. Zusätzlich zu indirectly_copyable spezifiziert dieses Konzept, dass die Kopie vom indirectly_readable Typ über ein Zwischenobjekt erfolgen kann.

[bearbeiten] Semantische Anforderungen

In und Out modellieren std::indirectly_copyable_storable<In, Out> nur, wenn für einen dereferenzierbaren Wert i vom Typ In gilt:

  • Nach der Definition std::iter_value_t<In> obj(*i); ist obj gleich dem Wert, auf den zuvor *i verwiesen hat, und
  • wenn std::iter_reference_t<In> ein rvalue-Referenztyp ist, befindet sich *i nach der Initialisierung von obj in einem gültigen, aber unbespezifizierten Zustand.

[bearbeiten] Gleichheitserhaltung

Ausdrücke, die in requires-Ausdrücken der Standardbibliothekskonzepte deklariert sind, müssen gleichheitserhaltend sein (sofern nicht anders angegeben).

[bearbeiten] Siehe auch

spezifiziert, dass Werte von einem indirectly_readable Typ zu einem indirectly_writable Typ kopiert werden können
(Konzept) [bearbeiten]
spezifiziert, dass Werte von einem indirectly_readable Typ zu einem indirectly_writable Typ verschoben werden können und dass das Verschieben über ein Zwischenobjekt erfolgen kann
(Konzept) [bearbeiten]