このコードを見てください:
template<class T>
class A
{
class base
{
};
class derived : public A<T>::base
{
};
public:
int f(typename A<T>::base& arg = typename A<T>::derived())
{
return 0;
}
};
int main()
{
A<int> a;
a.f();
return 0;
}
コンパイルすると、g++で次のエラーメッセージが生成されます。
test.cpp: In function 'int main()':
test.cpp:25: error: default argument for parameter of type
'A<int>::base&' has type 'A<int>::derived'
基本的な考え方(base-reference-type引数のデフォルト値として派生クラスを使用)は、Visual Studioでは機能しますが、g++では機能しません。コードを大学のサーバーに公開し、そこでgccでコンパイルする必要があります。私に何ができる?足りないものはありますか?