このコードがコンパイルされないのはなぜですか?
struct A {
template <class T>
static T a(int i) { return 2*i; }
};
template <class T>
struct B {
double b;
B(): b(T::a<double>(5)) {}
};
template class B<A>;
コンパイラは、テンプレートのインスタンス化にさえ到達しません。gcc 4.7.0 を使用しています。
test.cc: In constructor »B<T>::B()«:
test.cc:9:25: Error: expected »(« before »<« token
test.cc:9:26: Error: expected primary-expression before »double«