Erro "argumento de modelo inválido" no Visual Studio, mas não no GCC

suponha que você tenha o código

template <template<class> class BaseType>
class EST16
    : public BaseType<int>
{
public:
    EST16(double d) 
    {
    }
};

template <class T>
class SCEST
{
    T y;
};
typedef EST16<SCEST> EST16_SC;
class Child
    : public EST16_SC
{
public:
    Child()
        : EST16_SC(1.0)
    {
    }

};



class NotWorkingChild
    : public EST16<SCEST>
{
public:
    NotWorkingChild()
        : EST16<SCEST>(1.0)
    {
    }

};



TEST(TemplateTest, TestInstantiate)
{
    Child child;
    NotWorkingChild notWorkingChild; 
}

Child e NotWorkingChild diferem apenas pelo typedef. No GCC, ambos compilam, no Visual Studio o construtor de NotWorkingChild produz o seguinte erro:

2>..\..\..\src\itenav\test\SCKFErrorStateTest.cpp(43) : error C3200: 'SCEST<T>' : invalid template argument for template parameter 'BaseType', expected a class template
2>        with
2>        [
2>            T=int
2>        ]

Você pode explicar por que esse é o caso? Existe uma solução portátil melhor que a typedef?

Obrigado

questionAnswers(2)

yourAnswerToTheQuestion