Laut dieser Seite: http://womble.decadent.org.uk/c++/template-faq.html#nicht-abhängig "Nicht abhängige Namen sind die Namen, die nicht von den Parametern der Vorlage abhängen, sowie der Name der Vorlage selbst und die darin deklarierten Namen (Mitglieder, Freunde und lokale Variablen)".
Dies scheint durch die Tatsache gestützt zu werden, dass der folgende Code als gültig angesehen wird (von 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
}
};
Nachdem ich einige Zeit damit verbracht habe, den C++ 98-Standard zu lesen, kann ich nicht finden, wo dieses Verhalten spezifiziert ist. Ich würde erwarten, dass dies unter "temp.nondep" erwähnt wird.