この(CRTPのような)コードをGCC 4.6.0でコンパイルしようとすると:
template<template<class> class T> struct A;
template<class T>
struct B: A<B<T>::template X> {
template <class U> struct X { U mem; };
};
B<int> a;
「test.cpp:3:26:エラー:「structB<int>」に「X」という名前のクラステンプレートがありません」というエラーメッセージが表示されます。Xがクラス定義の外で見えないように見えるのはなぜですか?