我正在尝试使用remove_if
STL函数,并且正在传递 map ,unordered_map或 vector 。所有这些都带有返回迭代器的函数.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);
}
其中table是unorded_map,map或vector。 func是自定义函子
编译器说:
Error C2228 left of '.begin' must have class/struct/union
最佳答案
看起来像MSVC错误,gcc非常满意,请参阅:
https://wandbox.org/permlink/KuzZrEriPQerBoou
但是,如果像我的示例一样使用模板推导,是否指定了/ std:c++ 17? (而且我认为这在MSVC中可能仍不完整)。
关于c++ - 在模板化数据结构上调用begin()或end(),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56509830/