Namensräume
Varianten
Aktionen

decay-copy

Von cppreference.com
template< class T >
typename std::decay<T>::type decay-copy( T&& value );
(seit C++11)
(bis C++20)
(nur Exposition*)
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 Exposition*)

Gibt eine dekayed prvalue Kopie von value zurück, die mittels std::forward<T>(value) (implizit in den dekayed Typ konvertiert) erzeugt wird.

Inhalt

[bearbeiten] Parameter

value - Der zu kopierende Wert

[bearbeiten] Rückgabewert

Eine dekayed Kopie von value als prvalue.

[bearbeiten] Hinweise

decay-copy wurde durch die Auflösung von LWG issue 929 eingeführt. Es wird zunächst in der Concurrency Support Library verwendet, um sicherzustellen, dass Argumente bei der Übergabe by-value dekayed werden, und später in der Ranges Library.

Das Sprachfeature auto(x), das in C++23 eingeführt wurde, ermöglicht ebenfalls die Erzeugung von dekayed Kopien als prvalues. Der einzige Unterschied besteht darin, dass decay-copy value immer materialisiert und eine Kopie erzeugt, während auto(expr) ein No-op ist, wenn expr ein prvalue ist.

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

[bearbeiten] Defect Reports

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

[bearbeiten] Siehe auch

erstellt ein neues thread-Objekt
(public member function of std::thread) [bearbeiten]
konstruiert neues jthread-Objekt
(public member function of std::jthread) [bearbeiten]
(C++11)
führt eine Funktion asynchron aus (potenziell in einem neuen Thread) und gibt ein std::future zurück, das das Ergebnis enthalten wird
(Funktionsvorlage) [bearbeiten]
gibt einen Iterator zum Anfang eines Ranges zurück
(Customization Point Objekt)[edit]
gibt ein Sentinel zurück, das das Ende eines Ranges anzeigt
(Customization Point Objekt)[edit]
gibt einen Reverse-Iterator zu einem Range zurück
(Customization Point Objekt)[edit]
gibt einen Reverse-End-Iterator zu einem Range zurück
(Customization Point Objekt)[edit]
gibt eine Ganzzahl zurück, die der Größe eines Ranges entspricht
(Customization Point Objekt)[edit]
ruft einen Zeiger auf den Anfang eines zusammenhängenden Ranges ab
(Customization Point Objekt)[edit]
ein view, der alle Elemente eines range enthält
(Alias-Template) (Range-Adaptor-Objekt)[edit]
ein view, der aus den ersten N Elementen eines anderen view besteht
(Klassen-Template) (Range-Adaptor-Objekt)[edit]
ein view, der aus Elementen eines anderen view besteht, wobei die ersten N Elemente übersprungen werden
(Klassen-Template) (Range-Adaptor-Objekt)[edit]