Namespaces
Variants

std:: reference_converts_from_temporary

From cppreference.net
Metaprogramming library
Type traits
Type categories
(C++11)
(C++11) ( DR* )
Type properties
(C++11)
(C++11)
(C++14)
(C++11) (deprecated in C++26)
(C++11) ( until C++20* )
(C++11) (deprecated in C++20)
(C++11)
Type trait constants
Metafunctions
(C++17)
Supported operations
Relationships and property queries
Type modifications
Type transformations
(C++11) (deprecated in C++23)
(C++11) (deprecated in C++23)
(C++11)
(C++11) ( until C++20* ) (C++17)

Compile-time rational arithmetic
Compile-time integer sequences
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 =

std :: reference_converts_from_temporary < T, U > :: value ;
(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

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...)> )