对你的问题最具体的答案是:没有人建议这样做。
C++ 标准委员会是一个多国家、多公司的志愿者集合。您将其视为单个组织内的设计委员会。如果没有提议将文字写入标准草案,C++ 标准委员会实际上无能为力。
我想没有提出建议的原因是类型特征是一个早期的建议,boost 的实现可以追溯到 2000 年左右。模板别名的实现很晚。许多委员会成员不愿意提出他们尚未实施的建议。而且几乎没有机会实施你的建议。
发布 C++11 面临着很大的压力。它确实打算在 2009 年发布,但当发布日期推迟后,除了修复已经在考虑的功能之外,很难对工作文件做任何事情。在某些时候,您必须将伟大的新想法放在次要位置,以免您永远无法交付。
Update
从 C++14 开始,TransformationTraits(生成类型的那些)现在具有模板别名拼写,例如:
template <bool b, class T = void>
using enable_if_t = typename enable_if<b,T>::type;
C++1z 工作草案现在具有用于生成值的特征的模板变量拼写:
template <class T>
constexpr bool is_pointer_v = is_pointer<T>::value;
另外,即使在 C++11 中也可以这样做:
typename enable_if<is_pointer<T>{}, size_t>::type
address(T p);
IE。您可以使用{}
代替::value
(假设你的编译器有constexpr
支持)。在 C++14 中,变为:
enable_if_t<is_pointer<T>{}, size_t>
address(T p);
在 C++1z 中:
enable_if_t<is_pointer_v<T>, size_t>
address(T p);
请注意,C++1z 和 C++14 之间的差异非常小,甚至不保存字符,只是进行更改{}
to _v
并更改放置这两个字符的位置。