5

在查看 C++14 元函数别名提案(TransformationTraits Redux, v2,N3655)时,我注意到,不仅类型到类型的转换(例如add_const),类型到值的元函数(例如is_void)也是类型别名。(在N3797中不存在)。

别名类型对值元函数有什么好处吗?我认为,可以在没有这些别名的情况下使用它们,例如enable_if_t<is_void<T>::value,T>或者enable_if_t<is_void<T>{}(),T>当存在转换操作时。(我猜is_void<T>::type::value是一样的is_void<T>::value

如果值元函数的类型需要是别名,将它们别名为变量模板会更好吗(我没有 C++14 编译器并且从未使用过变量模板。所以语法可能是错误的)?例如别名is_void

template <class T>
constexpr bool is_void_t = is_void<T>::value;

代替

template <class T>
using is_void_t = typename is_void<T>::type;

这样就可以enable_if_t<is_void_t<T>,T>不用boost风格写了enable_if,写表达会更容易(egenable_if_t<(is_void_t<T> || is_integral_t<T>),T>

4

1 回答 1

4
于 2013-11-30T11:40:49.533 回答