template <class X> class Xt { };
template <class X, class Y> class Yt { };

template<class S, class T>
class Base { };

template<class T>
class Derived : public Base<int, Xt<T> >, public Yt<Xt<int>, T>
{
private:
    Xt<long> a;
    struct abcd
    {
    }
    b;
};

struct EmptyStruct { };

int main ()
{
    Derived<long> d;
    EmptyStruct empty;
}

