【发布时间】:2015-08-18 01:15:27
【问题描述】:
我想知道,在 C+ 中引入 std::bool_constant 及其随后用于 std::true_type 和 std::false_type(以及在标头 <ratio> 中定义的比较结构,参见 N4389)背后的基本原理是什么+17?
到目前为止,我只能找到包含以下措辞的文件:
- http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4334.html
- http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4389.html
虽然两篇论文都提到了“基本原理”——https://issues.isocpp.org/show_bug.cgi?id=51——但链接到的评论提要大多指出这是“基于对 c++std-lib* 的讨论”(大概是指私人反射器?),不再赘述。
这是文档: http://en.cppreference.com/w/cpp/types/integral_constant
【问题讨论】:
-
我也是第一个想法。阅读有关 SFINAE 的信息,这可能很有用。
-
@LightnessRacesinOrbit SFINAE 和它有什么关系?
-
@MarcAndreson:我没能用“SFINAE”代替更好的主意,但这不是错误;)
-
@LightnessRacesinOrbit 实际上,您能想出任何合理的例子,说明
bool_constant应该与SFINAE 结合使用吗?我不能,我的头顶。 -
Boost.MPL 在某种意义上是现代元编程的先驱,它伴随着
mpl::bool_<>(以及mpl::int_等),因此该技术有先例。