| Home | Libraries | People | FAQ | More

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