это правильно, но я ищу портативное решение, и это не компилируется с GCC :-(

оложим, у вас есть код

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 и NotWorkingChild отличаются только typedef. В GCC оба компилируются, в Visual Studio конструктор NotWorkingChild выдает следующую ошибку:

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>        ]

Можете ли вы объяснить, почему это так? Есть ли лучшее портативное решение, чем typedef?

Спасибо!

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

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