1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
|
[/
Copyright 2007 John Maddock.
Distributed under the Boost Software License, Version 1.0.
(See accompanying file LICENSE_1_0.txt or copy at
http://www.boost.org/LICENSE_1_0.txt).
]
[section:decay decay]
template <class T>
struct decay
{
typedef __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`.
__std_ref 3.9.1.
__header ` #include <boost/type_traits/decay.hpp>` or ` #include <boost/type_traits.hpp>`
[table 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)`]]
]
[all_compilers]
[endsect]
|