Namespaces
Variants

std:: reference_converts_from_temporary

From cppreference.net
Metaprogramming library
Type traits
Type categories
(C++11)
(C++11) ( DR* )
Type properties
(C++11)
(C++11)
(C++14)
(C++11) (deprecated in C++26)
(C++11) ( until C++20* )
(C++11) (deprecated in C++20)
(C++11)
Type trait constants
Metafunctions
(C++17)
Supported operations
Relationships and property queries
Type modifications
Type transformations
(C++11) (deprecated in C++23)
(C++11) (deprecated in C++23)
(C++11)
(C++11) ( until C++20* ) (C++17)

Compile-time rational arithmetic
Compile-time integer sequences
Definiert im Header <type_traits>
template < class T, class U >
struct reference_converts_from_temporary ;
(seit C++23)

Sei V gleich std:: remove_cv_t < U > falls U ein skalarer Typ oder cv  void ist, andernfalls sei V gleich U . Wenn T ein Referenztyp ist und für einen hypothetischen Ausdruck e , für den decltype ( e ) gleich V ist, die Variablendefinition T ref = e ; wohlgeformt ist und ein temporäres Objekt bindet an ref , dann ist der Mitgliedskonstant value gleich true . Andernfalls ist value gleich false .

Wenn T ein Lvalue-Referenztyp auf einen const- aber nicht volatile-qualifizierten Objekttyp oder ein Rvalue-Referenztyp ist, müssen sowohl std:: remove_reference_t < T > als auch std:: remove_reference_t < U > vollständige Typen , cv void oder Arrays unbekannter Grenze sein; andernfalls ist das Verhalten undefiniert.

Wenn eine Instanziierung einer Vorlage oben direkt oder indirekt von einem unvollständigen Typ abhängt und diese Instanziierung ein anderes Ergebnis liefern könnte, wenn dieser Typ hypothetisch vervollständigt würde, ist das Verhalten undefiniert.

Wenn das Programm Spezialisierungen für std::reference_converts_from_temporary oder std::reference_converts_from_temporary_v hinzufügt, ist das Verhalten undefiniert.

Inhaltsverzeichnis

Hilfsvariablen-Template

template < class T, class U >

inline constexpr bool reference_converts_from_temporary_v =

std :: reference_converts_from_temporary < T, U > :: value ;
(seit C++23)

Geerbt von std:: integral_constant

Member-Konstanten

value
[static]
true falls T ein Referenztyp ist, ein U -Wert an T in der Kopierinitialisierung gebunden werden kann und ein temporäres Objekt an die Referenz gebunden würde, false andernfalls
(öffentliche statische Member-Konstante)

Member-Funktionen

operator bool
konvertiert das Objekt zu bool , gibt value zurück
(öffentliche Member-Funktion)
operator()
(C++14)
gibt value zurück
(öffentliche Member-Funktion)

Member-Typen

Typ Definition
value_type bool
type std:: integral_constant < bool , value >

Hinweise

std::reference_converts_from_temporary kann verwendet werden, um bestimmte Fälle abzulehnen, die immer zu hängenden Referenzen führen.

Beispiel

#include <type_traits>
int main() {}
static_assert(
    std::reference_converts_from_temporary_v<int&&, int> == true &&
    std::reference_converts_from_temporary_v<const int&, int> == true &&
    std::reference_converts_from_temporary_v<int&&, int&&> == false &&
    std::reference_converts_from_temporary_v<const int&, int&&> == false &&
    std::reference_converts_from_temporary_v<int&&, long&&> == true &&
    std::reference_converts_from_temporary_v<int&&, long> == true);

Siehe auch

prüft, ob ein Typ in einen anderen Typ konvertiert werden kann
(Klassentemplate)
(C++17) (C++23)
ruft ein beliebiges Callable -Objekt mit gegebenen Argumenten auf mit Möglichkeit zur Rückgabetypspezifikation (seit C++23)
(Funktionstemplate)
(C++11)
bindet ein oder mehrere Argumente an ein Funktionsobjekt
(Funktionstemplate)
(C++17)
ruft den bereitgestellten Funktor mit den in einem oder mehreren variant s gehaltenen Argumenten auf
(Funktionstemplate)
konstruiert eine neue std::function -Instanz
(öffentliche Elementfunktion von std::function<R(Args...)> )
konstruiert ein neues std::move_only_function -Objekt
(öffentliche Elementfunktion von std::move_only_function )
konstruiert das Task-Objekt
(öffentliche Elementfunktion von std::packaged_task<R(Args...)> )