空格很重要的另一种情况(也许?

Another case where whitespace matters (maybe?)

本文关键字:也许 情况 另一种 重要的 空格      更新时间:2023-10-16

这是另一种情况,空格在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++编辑器无法编译它,并指出:"类型说明符的无效组合"。但是在签名中添加单个空格,它可以很好地编译:

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

这是空格很重要的情况。编译器将匹配它能匹配的最大符号,因此它匹配>= .空格会导致它按预期进行解析。