为什么"auto"不能作为 lambda 参数
Why "auto" is not acceptable as lambda parameter
为什么这段代码会出现编译错误?
std::find_if(std::begin(some_list), std::end(some_list), [](const auto& item){
//some code
});
错误当然在"auto"?为什么不可能自动知道类型?由于
这是因为从c++ 11开始,c++中的lambda函数不能通用地定义,因此不能使用auto
声明参数。
然而,您可以在c++ 11中使用decltype()
实现同样的事情,在您的情况下:
std::find_if(std::begin(some_list), std::end(some_list), [](decltype(*some_list.begin())& item){
return item > 4;
相关文章:
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 使用自动推导的 lambda 参数作为常量表达式
- 如何参数化用作另一个 lambda 参数的 lambda
- 有没有办法根据 lambda 参数返回类型部分专用化我的模板化函数?
- 从成员函数签名中自动推导lambda参数
- Clang声称通用lambda参数的constexpr成员不是constexpr
- 如果我的模板类型首先以lambda参数而发生,则MSVC会引起一个奇怪的错误
- 继承类中没有匹配的泛型委托作为 lambda 参数
- 为什么在lambda参数中不允许自动
- 如何定义通用 lambda 参数的模板参数?
- 在 QGraphicsScene 中拖动 QPixmap:如何避免 lambda 参数中不允许'auto'
- variadic模板函数会以相反的顺序调用lambda参数
- 可变模板lambda参数的模板推导
- 嵌套模板功能中的C 0x lambda参数
- 带有 std::函数和 lambda 参数的分段错误
- 从值捕获的变量分配到lambda参数时,GCC编译器分割故障
- 标准::p空气的通用 lambda 参数
- C++ lambda 参数列表
- 我的 lambda 参数真的在阴影我的当地人吗?
- 从常量和引用的角度来看,函数应该如何接受*lambda*参数