Non capisco, mi sembra che la chiamata a f
sia completamente non ambigua, ma non riesce a compilare con expected primary-expression before ‘int’
. Se commento la linea con la chiamata a f
, compila bene.Perché viene visualizzato un errore durante il tentativo di richiamare una funzione membro modello con un parametro di tipo esplicito?
template<typename T>
struct A {
template<typename S>
void f() { }
};
template<typename T>
struct B : A<T> {
void g() {
this->f<int>();
}
};
Mi congratulo per non aver trovato solo questo problema diabolico, ma per non averlo giurato una volta mentre lo descrivevo. –