我正在尝试编写一个使用std::find_if和lamda函数来检查元组中的条目的函数.
如果元组中的第三个条目不是a nullptr,则将元组(字符串)中的第一个条目添加到列表中并返回列表.
然而,编译失败了
/usr/include/c++/5/bits/predefined_ops.h:234:30:错误:void值不被忽略,因为它应该是{return bool(_M_pred(*__ it)); }
任何人都可以确定我做错了什么?
std::vector<std::string> class::list() const
{
std::vector<std::string> arglist;
arglist.reserve((arguments_.size()));
std::find_if(arguments_.begin(), arguments_.end(),[&arglist](std::tuple<std::string, std::type_index, Value> argument)
{
if (&std::get<2>(argument) != nullptr)
arglist.push_back(std::get<0>(argument));
}
);
return arglist;
}
Run Code Online (Sandbox Code Playgroud)
谓词不应该真正执行任何操作,只返回a true或false取决于搜索的项目是否符合您的条件.
你的lambda没有返回任何东西,这会导致你得到的错误.
在我看来,你真正想要的是std::transform或std::for_each.或者甚至只是一个普通的远程for循环?
| 归档时间: |
|
| 查看次数: |
130 次 |
| 最近记录: |