производный класс в качестве аргумента по умолчанию g ++

Пожалуйста, посмотрите на этот код:

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. Что я могу сделать? Есть ли что-то, что мне не хватает?

Ответы на вопрос(2)

Ваш ответ на вопрос