Some type transformations in <type_traits>
can also be expressed using core language syntax (e.g. std::add_const<T>::type
is/seems equivalent to const T
). Dtto for std::add_lvalue_reference
, and perhaps others. What is the use for these type traits?
I fully understand the standard would be providing an "incomplete toolbox" without them, and I can imagine use in a meta way, something like this:
template<typename In, template <typename> class Modifier>
struct Apply {
typedef typename Modifier<T>::type Out;
};
Apply<int, std::add_const>
Are there any other use cases for these traits which can be expressed syntactically, or are they just included "out of a sense of completeness" and for the occasional meta-use?
See Question&Answers more detail:os