Я не понимаю, мне кажется, что вызов f
совершенно однозначный, но он не может скомпилировать с ожидаемым первичным выражением перед int
. Если я закомментирую строку с вызовом f
, она компилируется нормально.
template<typename T>
struct A {
template<typename S>
void f() { }
};
template<typename T>
struct B : A<T> {
void g() {
this->f<int>();
}
};