std:: reference_converts_from_temporary
|
Défini dans l'en-tête
<type_traits>
|
||
|
template
<
class
T,
class
U
>
struct reference_converts_from_temporary ; |
(depuis C++23) | |
Soit
V
égal à
std::
remove_cv_t
<
U
>
si
U
est un type scalaire ou
cv
void
, ou
U
sinon. Si
T
est un type référence, et étant donnée une expression hypothétique
e
telle que
decltype
(
e
)
est
V
, la définition de variable
T ref
=
e
;
est bien formée et
lie un objet temporaire
à
ref
, alors fournit la constante membre
value
égale à
true
. Sinon,
value
est
false
.
Si
T
est un type référence lvalue vers un type d'objet const-qualifié mais non volatile ou un type référence rvalue, alors
std::
remove_reference_t
<
T
>
et
std::
remove_reference_t
<
U
>
doivent être des
types complets
,
cv
void
, ou des
tableaux de taille inconnue
; sinon le comportement est indéfini.
Si une instanciation d'un template ci-dessus dépend, directement ou indirectement, d'un type incomplet, et que cette instanciation pourrait produire un résultat différent si ce type était hypothétiquement complété, le comportement est indéfini.
Si le programme ajoute des spécialisations pour
std::reference_converts_from_temporary
ou
std::reference_converts_from_temporary_v
, le comportement est indéfini.
SommaireModèle de variable auxiliaire
Hérité de std:: integral_constantConstantes membres
Fonctions membres
Types membres
Notes
Exemple
Exécuter ce code
#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); Voir aussi
|