std::type_identity
template< class T >
struct type_identity;
| | (since C++20) |
Provides the member typedef type
that names T
(i.e., the identity transformation).
Member types
Helper types
template< class T >
using type_identity_t = typename type_identity<T>::type;
| | (since C++20) |
Possible implementation
template< class T >
struct type_identity {
using type = T;
}; |
Notes
type_identity
can be used to block template argument deduction:
template<class T>
void f(T, T);
template<class T>
void g(T, std::type_identity_t<T>);
f(4.2, 0); // error, deduced conflicting types for 'T'
g(4.2, 0); // OK, calls g<double>
Example