一些在
如果没有它们,标准就会提供一个“不完整的工具箱”。我可以想象以元方式使用它们的情况,类似于这样的东西:
这些特征还有哪些能够通过语法表达的用例,或者它们只是为了完整性和偶尔的元用途而被包含在内?
<type_traits>
中的类型转换也可以用核心语言语法来表达(例如,std::add_const<T>::type
等同于 const T
)。std::add_lvalue_reference
等其他类型特性也是如此。这些类型特性有什么作用呢?如果没有它们,标准就会提供一个“不完整的工具箱”。我可以想象以元方式使用它们的情况,类似于这样的东西:
template<typename In, template <typename> class Modifier>
struct Apply {
typedef typename Modifier<T>::type Out;
};
Apply<int, std::add_const>
这些特征还有哪些能够通过语法表达的用例,或者它们只是为了完整性和偶尔的元用途而被包含在内?
T
已经是const
,会发生什么? - Peter Woodstd::add_{l,r}value_reference
的原因是void
会对一个简单的T&
或T&&
报错,因为你不能形成一个对void
的引用。至于add_const
,我只能想到它的对称性。 - Xeoadd_const
,还请参考这个问答。 - Andy Prowl