GCC 4.8.1 принимает
template <typename T>
class Subclass : public Baseclass<T>
{
public:
using typename Baseclass<T>::Baseclass;
};
но MSVC этого не делает. С другой стороны, MSVC принимает
template <typename T>
class Subclass : public Baseclass<T>
{
public:
using typename Baseclass::Baseclass;
};
но GCC этого не делает. Затем я видел еще одно объявление в следующих вопросах: С++ 11 наследования конструкторов шаблонов
template <typename T>
class Subclass : public Baseclass<T>
{
public:
using typename Baseclass::Baseclass<T>;
};
для которого MSVC предупреждает об "устаревшем стиле декларации", а GCC говорит
prog.cpp:8:24: error: ‘template<class T> class Baseclass’ used without template parameters
using typename Baseclass::Baseclass<T>;
Я думал, что первым примером будет стандартный синтаксис соответствия. Интуитивно, это выглядит правильно для меня.
Что такое синтаксис стандартного соответствия С++ 11?