I have the following situation:
template <class A, typename B, typename C, class D>
class Base
{
public:
// ctor and virtual dtor
// functions
class Inner
{
//...
};
protected:
// members
};
template <class E>
class Sub : public Base<std::string, float, double, E>
{
public:
// ctor and virtual dtor
// functions using Inner class inherit from Base
};
While msvc compiles just fine (visual studio 2012 with ctp nov 2012 compiler), gcc (4.9.0 build from trunk) complains about every member used from Base and also about the inner class from Base.
I noticed that msvc is quite relaxed when it comes to templates, however i also need this code running and compiling under linux with gcc. So, where is the bogus code that msvc accepts but gcc not?