10

这是另一种情况,其中空格在 C++ 中很重要,还是编译器错误?以下代码在语法上是否正确?

#include <type_traits>

template <bool cond>
using EnableIf = typename std::enable_if<cond, int>::type;

template <int n, EnableIf<n == 1>=0>
void func()
{}

英特尔 C++ Composer 无法编译它说:“类型说明符的无效组合”。但是在签名中添加单个空格,它编译得很好:

template <int n, EnableIf<n == 1> =0>
void func()
{}
4

1 回答 1

18

这是空格很重要的情况。编译器将匹配最大的符号,所以它匹配>=. 空格会导致它按照您的意图进行解析。

于 2012-12-19T11:33:35.667 回答