为什么这段代码会编译出错?
std::find_if(std::begin(some_list), std::end(some_list), [](const auto& item){
//some code
});
当然是“auto”的错误?为什么不可能自动知道类型? 谢谢
最佳答案
这是因为从 C++11 开始,C++ 中的 lambda 函数无法通用定义,因此您无法使用 auto
声明参数。这已被添加到 C++14 中(并且已经被一些编译器支持)。
但是,您可以在 C++11 中使用 decltype()
实现同样的事情,在您的例子中:
std::find_if(std::begin(some_list), std::end(some_list), [](decltype(*some_list.begin())& item){
return item > 4;
关于c++ - 为什么不能接受 "auto"作为 lambda 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32646362/