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.
Inhaltsverzeichnis |
Hilfsvariablen-Template
|
template
<
class
T,
class
U
>
inline
constexpr
bool
reference_converts_from_temporary_v
=
|
(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
|
(C++11)
(C++20)
|
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...)>
)
|