2012-12-19 11 views
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は、「タイプ指定子の無効な組み合わせ」と言ってコンパイルできません。しかし、シグネチャ内に空白を1つだけ追加すると、コンパイルは正常に行われます。

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

さて、「 = 0」> ' – irrelephant

答えて

18

空白が重要な場合です。コンパイラは最大のシンボルと一致するので、>=と一致します。空白は、意図したとおりに解析します。

関連する問題