decay-copy
|
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
>>
|
(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) |
|
(C++20)
|
Gibt einen Iterator zum Anfang eines Bereichs zurück
(Anpassungspunkt-Objekt) |
|
(C++20)
|
Gibt einen Sentinel zurück, der das Ende eines Bereichs anzeigt
(Anpassungspunkt-Objekt) |
|
(C++20)
|
Gibt einen Reverse-Iterator für einen Bereich zurück
(Anpassungspunkt-Objekt) |
|
(C++20)
|
Gibt einen Reverse-End-Iterator für einen Bereich zurück
(Anpassungspunkt-Objekt) |
|
(C++20)
|
Gibt eine ganze Zahl gleich der Größe eines Bereichs zurück
(Anpassungspunkt-Objekt) |
|
(C++20)
|
Ermittelt einen Zeiger auf den Anfang eines zusammenhängenden Bereichs
(Anpassungspunkt-Objekt) |
|
(C++20)
|
Eine
view
, die alle Elemente eines
range
enthält
(Alias-Template) (Bereichsadapter-Objekt) |
|
(C++20)
|
Eine
view
, die aus den ersten N Elementen einer anderen
view
besteht
(Klassen-Template) (Bereichsadapter-Objekt) |
|
(C++20)
|
Eine
view
, die aus Elementen einer anderen
view
besteht, wobei die ersten N Elemente übersprungen werden
(Klassen-Template) (Bereichsadapter-Objekt) |