Hum*_*awi 3 c++ lambda auto c++11
为什么这段代码会产生编译错误?
std::find_if(std::begin(some_list), std::end(some_list), [](const auto& item){
//some code
});
Run Code Online (Sandbox Code Playgroud)
当然在"自动"的错误?为什么不能自动知道类型?谢谢
这是因为从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;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
307 次 |
| 最近记录: |