为什么这段代码会产生编译错误?
std::find_if(std::begin(some_list), std::end(some_list), [](const auto& item){
//some code
});
当然在#34; auto"?为什么不能自动知道类型? 感谢
答案 0 :(得分:7)
这是因为从C ++ 11开始,C ++中的lambda函数无法一般定义,因此您无法使用auto
声明参数。这已在C ++ 14中添加(并且已被某些编译器支持)。
但是,你可以使用decltype()
在C ++ 11中实现相同的功能,在你的情况下:
std::find_if(std::begin(some_list), std::end(some_list), [](decltype(*some_list.begin())& item){
return item > 4;