我开始看std::common_type
我不太确定其目的和功能。
有几件事仍然让我觉得奇怪:
如需参考,请参阅 N3242 中的第 §20.9.7.6 表 57。
std::common_type
被引入与使用std::duration
---如果你添加一个std::duration<int>
and a std::duration<short>
那么结果应该是std::duration<int>
。我们决定委托给一个单独的模板,该模板使用适用于该对象的核心语言规则找到结果,而不是指定无限的允许配对。?:
算术 if 运算符。
然后人们发现这个模板可能普遍有用,并将其添加为std::common_type
,并扩展为处理任意数量的类型。但在 C++0x 库中,它仅用于类型对。
您应该能够使用新的 SFINAE 规则来检测是否存在某些实例化std::common_type
已验证。我还没有尝试过。在大多数情况下,如果没有“通用类型”,那么无论如何您都无能为力,因此编译错误是合理的。
std::common_type
不是魔法——它遵循以下规则?:
. If true?a:b
将编译,std::common_type<decltype(a),decltype(b)>::type
会给你结果的类型。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)