Namensräume
Varianten
Aktionen

std::reference_converts_from_temporary

Von cppreference.com
< cpp‎ | types
 
 
Metaprogrammierungsbibliothek
Typmerkmale
Typkategorien
(C++11)
(C++11)(DR*)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11) 
(C++11)
(C++11)
Typeneigenschaften
(C++11)
(C++11)
(C++14)
(C++11)(deprecated in C++26)
(C++11)(bis C++20*)
(C++11)(veraltet in C++20)
(C++11)
Typmerkmalskonstanten
Metafunktionen
(C++17)
Unterstützte Operationen
Beziehungen und Eigenschaftsabfragen
Typmodifikationen
(C++11)(C++11)(C++11)
Typentransformationen
(C++11)(veraltet in C++23)
(C++11)(veraltet in C++23)
(C++11)
(C++11)(bis C++20*)(C++17)

(C++11)
(C++11)
(C++17)
Rationale Arithmetik zur Compilezeit
Ganzzahlsequenzen zur Compilezeit
 
Definiert in der Kopfdatei <type_traits>
template< class T, class U >
struct reference_converts_from_temporary;
(seit C++23)

Sei V std::remove_cv_t<U>, wenn U ein skalarer Typ oder cv  void ist, andernfalls U. Wenn T ein Referenztyp ist und ein hypothetischer Ausdruck e gegeben ist, so dass decltype(e) V ist, die Variable-Definition T ref = e; wohlgeformt ist und ein temporäres Objekt an ref bindet, dann wird das Mitgliedskonstant value gleich true bereitgestellt. Andernfalls ist value false.

Wenn T ein lvalue-Referenztyp auf einen nur mit const- aber nicht mit 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 Grösse sein; andernfalls ist das Verhalten undefiniert.

Wenn eine Instanziierung einer Vorlage davon 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.

Inhalt

[edit] Hilfsvariablentemplate

template< class T, class U >

inline constexpr bool reference_converts_from_temporary_v =

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

Abgeleitet von std::integral_constant

Member-Konstanten

value
[static]
true, wenn 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, andernfalls false
(öffentliche statische Member-Konstante)

Memberfunktionen

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

Membertypen

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

[edit] Anmerkungen

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

[edit] 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);

[edit] Siehe auch

prüft, ob ein Typ in den anderen Typ konvertierbar ist
(Klassenvorlage) [bearbeiten]
(C++17)(C++23)
ruft jedes Callable-Objekt mit gegebenen Argumenten auf und der Möglichkeit, den Rückgabetyp anzugeben(seit C++23)
(Funktions-Template) [bearbeiten]
(C++11)
bindet ein oder mehrere Argumente an ein Funktions-Objekt
(Funktions-Template) [bearbeiten]
(C++17)
ruft den bereitgestellten Funktor mit den von einem oder mehreren variants gehaltenen Argumenten auf
(function template) [bearbeiten]
konstruiert eine neue std::function Instanz
(public member function of std::function<R(Args...)>) [edit]
erzeugt ein neues std::move_only_function-Objekt
(public member function of std::move_only_function) [edit]
konstruiert das Task-Objekt
(public member function of std::packaged_task<R(Args...)>) [edit]