Namespaces
Variants

std:: type_identity

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)

type_identity
(C++20)
(C++11)
(C++17)
Compile-time rational arithmetic
Compile-time integer sequences
Défini dans l'en-tête <type_traits>
template < class T >
struct type_identity ;
(depuis C++20)

Fournit le typedef membre type qui nomme T (c'est-à-dire la transformation identité).

Si le programme ajoute des spécialisations pour std::type_identity , le comportement est indéfini.

Table des matières

Types membres

Nom Définition
type T

Types auxiliaires

template < class T >
using type_identity_t = type_identity < T > :: type ;
(depuis C++20)

Implémentation possible

template<class T>
struct type_identity { using type = T; };
**Note:** Le code C++ dans les balises `
` n'a pas été traduit conformément aux instructions, car il s'agit de code source qui doit rester inchangé. Seul le texte visible sur la page web aurait été traduit, mais dans cet exemple, il n'y a pas de texte à traduire en dehors du code C++.

Notes

std::type_identity peut être utilisé pour établir des contextes non déduits dans la déduction d'arguments de template.

Macro de test de fonctionnalité Valeur Norme Fonctionnalité
__cpp_lib_type_identity 201806L (C++20) std::type_identity

Exemple

#include <iostream>
#include <type_traits>
template<class T>
T foo(T a, T b) { return a + b; }
template<class T>
T bar(T a, std::type_identity_t<T> b) { return a + b; }
int main()
{
    // foo(4.2, 1); // error, deduced conflicting types for 'T'
    std::cout << bar(4.2, 1) << '\n';  // OK, calls bar<double>
}

Sortie :

5.2

Voir aussi

(C++20)
objet fonction qui retourne son argument inchangé
(classe)