Другой случай, когда пробелы имеют значение (может быть?)

Это другой случай, когда пробелы имеют значение в С++ или это ошибка компилятора? Является ли синтаксически правильным следующий код?

#include <type_traits>

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

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

Intel С++ Composer не может скомпилировать его: "Недопустимая комбинация спецификаторов типов". Но добавьте одно одиночное прошивку в подписи, и оно просто компилируется:

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

Ответ 1

Это случай, когда пробелы имеют значение. Компилятор будет соответствовать самому большому символу, поэтому он соответствует >=. Пробелы заставляют его анализировать, как вы планировали.