Boost.Hana  1.6.0
Your standard library for metaprogramming
boost::hana::detail::decay< T, U > Struct Template Reference

Description

template<typename T, typename U = typename std::remove_reference<T>::type>
struct boost::hana::detail::decay< T, U >

Equivalent to std::decay, except faster.

std::decay in libc++ is implemented in a suboptimal way. Since this is used literally everywhere by the make<...> functions, it is very important to keep this as efficient as possible.

Note
std::decay is still being used in some places in the library. Indeed, this is a peephole optimization and it would not be wise to clutter the code with our own implementation of std::decay, except when this actually makes a difference in compile-times.