我不明白,在我看來,f
的調用是完全無歧義的,但它無法與expected primary-expression before ‘int’
編譯。如果我通過f
的呼叫註釋掉該行,它編譯得很好。爲什麼我嘗試使用顯式類型參數調用模板成員函數時出錯?
template<typename T>
struct A {
template<typename S>
void f() { }
};
template<typename T>
struct B : A<T> {
void g() {
this->f<int>();
}
};
我讚賞你不僅發現這個邪惡的問題,而且在描述它時從不發誓。 – 2011-02-09 10:15:03