Namespaces
Variants

decay-copy

From cppreference.net
template < class T >
typename std:: decay < T > :: type decay - copy ( T && value ) ;
(seit C++11)
(bis C++20)
( nur zur Darstellung* )
template < class T >

requires std:: convertible_to < T, std:: decay_t < T >>
constexpr std:: decay_t < T > decay - copy ( T && value )

noexcept ( std:: is_nothrow_convertible_v < T, std:: decay_t < T >> ) ;
(seit C++20)
( nur zur Darstellung* )

Gibt std:: forward < T > ( value ) (implizit konvertiert zum decayed Typ) zurück, eine decayed Prvalue-Kopie von value .

Inhaltsverzeichnis

Parameter

value - der zu kopierende Wert

Rückgabewert

Ein verfallener Kopie von value als Prvalue.

Hinweise

decay-copy wurde durch die Lösung von LWG Issue 929 eingeführt. Es wird zunächst in der Concurrency Support Library verwendet, um sicherzustellen, dass Argumente bei Wertübergabe zerfallen, und wird später in der Ranges Library verwendet.

Die Sprachfunktion auto ( x ) eingeführt in C++23 erlaubt ebenfalls die Erstellung zerfallener Kopien als Prvalues. Der einzige Unterschied besteht darin, dass decay-copy immer materialisiert value und eine Kopie erzeugt, während auto ( expr ) ein No-Op ist, falls expr ein Prvalue ist.

Alle Verwendungen von decay-copy in der Standardbibliothek (siehe unten) außer views::all , ranges::take_view und ranges::drop_view werden seit C++23 durch auto ( x ) ersetzt.

Fehlerberichte

Die folgenden verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.

DR Angewendet auf Verhalten wie veröffentlicht Korrigiertes Verhalten
LWG 3724 C++20 decay-copy war nicht eingeschränkt eingeschränkt

Siehe auch

Konstruiert neues thread -Objekt
(öffentliche Elementfunktion von std::thread )
Konstruiert neues jthread -Objekt
(öffentliche Elementfunktion von std::jthread )
(C++11)
Führt eine Funktion asynchron aus (möglicherweise in einem neuen Thread) und gibt ein std::future zurück, das das Ergebnis halten wird
(Funktions-Template)
Gibt einen Iterator zum Anfang eines Bereichs zurück
(Anpassungspunkt-Objekt)
Gibt einen Sentinel zurück, der das Ende eines Bereichs anzeigt
(Anpassungspunkt-Objekt)
Gibt einen Reverse-Iterator für einen Bereich zurück
(Anpassungspunkt-Objekt)
Gibt einen Reverse-End-Iterator für einen Bereich zurück
(Anpassungspunkt-Objekt)
Gibt eine ganze Zahl gleich der Größe eines Bereichs zurück
(Anpassungspunkt-Objekt)
Ermittelt einen Zeiger auf den Anfang eines zusammenhängenden Bereichs
(Anpassungspunkt-Objekt)
Eine view , die alle Elemente eines range enthält
(Alias-Template) (Bereichsadapter-Objekt)
Eine view , die aus den ersten N Elementen einer anderen view besteht
(Klassen-Template) (Bereichsadapter-Objekt)
Eine view , die aus Elementen einer anderen view besteht, wobei die ersten N Elemente übersprungen werden
(Klassen-Template) (Bereichsadapter-Objekt)