В каких ситуациях new возвращает один и тот же адрес дважды? - PullRequest
0 голосов
/ 30 марта 2011

Почему следующее не компилируется? Он говорит: «ошибка: ожидаемое первичное выражение перед токеном‘> ».

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();

1 Ответ

4 голосов
/ 30 марта 2011

Попробуйте

return l == r.template get<T>();

Прочтите этот FAQ для получения дополнительной информации: Что такое синтаксис ->template, .template и ::template о?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...