このページによると: http://womble.decadent.org.uk/c++/template-faq.html#non-dependent "非依存名は、テンプレート パラメーターに依存しないと見なされる名前と、名前テンプレート自体とその中で宣言された名前 (メンバー、フレンド、およびローカル変数) の
これは、次のコードが有効であると見なされているという事実によって裏付けられているようです (LLVM/Comeau による)。
template<typename T>
struct Template
{
typedef int I;
typedef Template::I Type; // 'Template' is NOT dependent
typedef Template<T>::I Type2; // 'Template<T>' is NOT dependent
Template<T>* m;
void f()
{
m->f(); // 'm' is NOT dependent
}
};
C++ 98 標準をしばらく読んだ後、この動作が指定されている場所を見つけることができません。これについては、「temp.nondep」の下で言及されると思います。