【发布时间】:2016-01-18 13:45:20
【问题描述】:
有谁知道下面的代码如何作用于 enable_if 的模板参数?
template <int n> void f(typename std::enable_if<(n < 0)>::type* = 0) {
/* ... n is negative ... */
}
template <int n> void f(typename std::enable_if<(n >= 0)>::type* = 0) {
/* ... n is positive ... */
}
特别是这部分(n < 0)>::type*,这对我来说没有意义,因为这看起来编译器正在隐式地将表达式(n < 0) 转换为一个对象。
我在其他一些 SFINAE 示例中也看到了这种将表达式视为对象的风格,但这里发生的事情让我无法理解。该对象是在某个 c++ 标头中定义的还是已经在标准中?如果是这样,这种将表达式视为对象的技术是什么?我该如何阅读更多相关信息?
非常感谢。
【问题讨论】:
标签: c++ templates object expression sfinae