是否可以绑定lambda函数的第二个参数
Is it possible to bind the second parameter of a lambda function?
我是C++11 lambda的新手,希望通过绑定第二个参数将二进制lambda转换为一元lambda
auto lambda1 = [] (int a, int b) { return a+b; };
auto lambda2 = std::bind2nd(lambda1, 5);
编译失败
error: no type named 'first_argument_type' in 'struct main(int, char**)::<lambda(int, int)>'
class binder2nd
如何做到这一点?
如果已经使用lambda表达式,只需使用另一个:
auto lambda2 = [&] (int i) {return lambda1(i, 5);};
#include <functional>
int main(int argc, char *argv[])
{
auto lambda1 = [](int a, int b) { return a+b; };
auto lambda2 = std::bind(lambda1, std::placeholders::_1, 5);
// ~~~~~~~^^^^~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^~~~
return 0;
}
演示
也更喜欢使用std::bind
而不是std::bind1st
和std::bind2nd
,因为两者在C++11中都已弃用,并计划在C++17中删除。
相关文章:
- 如果条件,当我想第二个参数时
- 如何从第一个参数推断第二个参数类型?
- C++ std::enable_if - 第二个参数的功能
- 如何成功地将函数对象(或lambda)传递给trackbar回调的第二个参数(void*)
- 第二个参数的部分模板专用化
- 难以理解C++中 inet_ntop() 的第二个参数
- 如何传递 ObjectTemplate::New in Google V8 的第二个参数
- 模板的C 功能将第一个参数设置为第二个参数为默认参数
- 我的类中的第二个参数是一个数组.我不确定如何在主程序中编写
- shake_transform_iterator作为推力中的第二个参数的重点是什么:: dredion算法
- 重载运算符:第一个参数对应左操作数,第二个参数对应右操作数
- 递归可变参数模板函数调用第二个参数类型的指针"loses"指针
- 无法转换初始值设定项列表的第二个参数
- 当 cin.getline() 的第二个参数大于数组长度时,不可预测的字符串长度
- 在 QList 派生类的每个迭代器中将'this'作为第二个参数
- std::vector.resize()中的第二个参数是什么意思
- CreateProcess的第二个参数应该是什么
- 此签名中的第二个参数是什么意思
- 是否可以绑定lambda函数的第二个参数
- 第二个参数和第三个参数在fwrite()中的作用是什么?为什么我们在这里需要 3rcount?