Почему следующее не компилируется? Он говорит: «ошибка: ожидаемое первичное выражение перед токеном‘> ».
template<typename K, typename V>
struct cmpf {
const K& r;
V& visitor;
cmpf(const K& _r, V& _visitor) : r(_r), visitor(_visitor) {}
template<typename T>
void operator()(T& l) {
if (r.type == a_type(T)) {
return l == r.get<T>(); // DOES NOT WORK
} else return false;
}
};
Почему бот компилятора понимает это? get () - это функция, определенная в типе K с аргументом шаблона. В этом случае я хочу использовать T в качестве аргумента, но компилятор не распознает это. Когда я использую следующее вместо этого, это работает (но это не правильно, так как get является функцией шаблона):
return l == r.get();