std:: reference_converts_from_temporary
|
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.
InhaltHelfer-Vorlage für Variablen
Geerbt von std:: integral_constantMember-Konstanten
Member-Funktionen
Member-Typen
Hinweise
Beispiel
Diesen Code ausführen
#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
|