Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

PrevUpHomeNext

decay

template <class T>
struct decay
{
   typedef see-below type;
};

template <class T> using decay_t = typename decay<T>::type; // C++11 and above

type: Let U be the result of remove_reference<T>::type, then if U is an array type, the result is remove_extent<U>::type*, otherwise if U is a function type then the result is U*, otherwise the result is remove_cv<U>::type.

C++ Standard Reference: 3.9.1.

Header: #include <boost/type_traits/decay.hpp> or #include <boost/type_traits.hpp>

Table 1.20. Examples

Expression

Result Type

decay<int[2][3]>::type

int[3]*

decay<int(&)[2]>::type

int*

decay<int(&)(double)>::type

int(*)(double)

int(*)(double)

int(*)(double)

int(double)

int(*)(double)


Compiler Compatibility: All current compilers are supported by this trait.


PrevUpHomeNext