вызов begin () или end () для шаблонной структуры данных - PullRequest
1 голос
/ 08 июня 2019

Я пытаюсь использовать функцию remove_if STL и передаю либо карту, unordered_map, либо вектор.Все из которых содержат функции .begin() и .end(), которые возвращают итераторы.Компилятор не позволяет мне вызывать функции из шаблонной переменной

Я пытался использовать .begin() и .end(), а также begin() и end()

template<typename FUNCTOR, typename datastructure>
void deleteFromHelper(FUNCTOR func, datastructure table)
{
    std::remove_if(table.begin(), table.end(), func);
}

где таблица является либо unorded_map, картой, либо вектором.и func - это пользовательский функтор

Компилятор говорит: Error C2228 left of '.begin' must have class/struct/union

1 Ответ

0 голосов
/ 08 июня 2019

Похоже, ошибка MSVC, GCC совершенно счастлив, см .:

https://wandbox.org/permlink/KuzZrEriPQerBoou

Но, если использовать шаблонный вывод как мой пример, вы указали / std: c ++ 17? (И я думаю, что это все еще может быть неполным в MSVC).

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