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.
Table des matières |
Modèle de variable d'assistance
|
template
<
class
T,
class
U
>
inline
constexpr
bool
reference_converts_from_temporary_v
=
|
(depuis C++23) | |
Hérité de std:: integral_constant
Constantes membres
|
value
[static]
|
true
si
T
est un type référence, une valeur
U
peut être liée à
T
dans l'initialisation par copie, et un objet temporaire serait lié à la référence,
false
sinon
(constante membre publique statique) |
Fonctions membres
|
operator bool
|
convertit l'objet en
bool
, retourne
value
(fonction membre publique) |
|
operator()
(C++14)
|
retourne
value
(fonction membre publique) |
Types membres
| Type | Définition |
value_type
|
bool |
type
|
std:: integral_constant < bool , value > |
Notes
std::reference_converts_from_temporary
peut être utilisé pour rejeter certains cas qui produisent toujours des références pendantes.
Exemple
#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
|
(C++11)
(C++20)
|
vérifie si un type peut être converti en un autre type
(modèle de classe) |
|
(C++17)
(C++23)
|
invoque tout objet
Callable
avec les arguments donnés
et possibilité de spécifier le type de retour
(depuis C++23)
(modèle de fonction) |
|
(C++11)
|
lie un ou plusieurs arguments à un objet fonction
(modèle de fonction) |
|
(C++17)
|
appelle le foncteur fourni avec les arguments contenus dans un ou plusieurs
variant
s
(modèle de fonction) |
construit une nouvelle instance de
std::function
(fonction membre publique de
std::function<R(Args...)>
)
|
|
construit un nouvel objet
std::move_only_function
(fonction membre publique de
std::move_only_function
)
|
|
|
construit l'objet tâche
(fonction membre publique de
std::packaged_task<R(Args...)>
)
|