次のいずれかを、「型」テンプレート・パラメーターのテンプレート引き数として使用することはできません。
テンプレート引き数が、型なのか、式なのかあいまいな場合は、 テンプレート引き数は、型であると見なされます。 次の例は、このことを示しています。
template<class T> void f() { }; template<int i> void f() { }; int main() { f<int()>(); }
関数呼び出し f<int()>() は、T をテンプレート引き数として、 関数を呼び出します。このときコンパイラーは、int() を型として扱い、 したがって暗黙的にインスタンスを作成し、最初の f() を呼び出します。
関連参照