根據此頁面: http://womble.decadent.org.uk/c++/template-faq.html#non-dependent 「非依賴名稱是那些被認爲不依賴於模板參數的名稱,以及模板本身的名稱和在其中聲明的名稱(成員,朋友和本地變量)」C++ 98標準在哪裏指定本地聲明的模板名稱不相關?
這似乎是由一個事實,即下面的代碼被認爲是有效的(由LLVM /科莫)
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'下找到這個提及。
請注意,由於C++ 11現在有一堆關於「名稱指當前實例*如果」涉及這種用法的語言。 –