次のような状況があります。
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
};
msvc は正常にコンパイルされますが (ctp nov 2012 コンパイラを使用した Visual Studio 2012)、gcc (トランクからの 4.9.0 ビルド) は Base から使用されるすべてのメンバーと Base からの内部クラスについて不平を言います。
テンプレートに関しては、msvc は非常に緩和されていることに気付きましたが、このコードを実行し、gcc を使用して Linux でコンパイルする必要もあります。では、msvc は受け付けるが gcc は受け付けない偽のコードはどこにあるのでしょうか?