柯里化可以与lambda函数一起使用吗?
Can currying be used with lambda functions?
这段代码未能编译,我不知道是否因为它不能做,lambdas不继承binary_function,或者只是我语法错误
#include <functional>
int main(int argc, const char *argv[])
{
auto lambda = [](int x, int y) -> int { return x + y; };
auto sumFive = std::bind1st(lambda, 5);
return 0;
}
使用说明:
auto sumFive = std::bind(lambda, 5, std::placeholders::_1);
请完全忘记bind1st
和binary_function
等。由于缺乏lambdas和可变模板,这些在旧的c++中是拐杖。在c++ 11中,使用std::function
和std::bind
std::bind1st
和std::bind
在c++ 11中是多余的。只需使用另一个lambda:
auto lambda = [](int x, int y) { return x + y; };
auto sumFive = [&](int y) { return lambda(5, y); };
这样更清晰更简单(不需要知道std::bind
做什么或std::placeholders
做什么),更灵活(它可以支持任何表达式,而不仅仅是参数绑定),不需要支持头文件,并且可能会编译得更快一些。
相关文章:
- 将 std::map::emplace 与返回 shared_ptr 的函数一起使用是否正确?
- 将新放置与 std::函数一起使用不起作用
- 将函数指针和对象放在一起
- 如何将result_of与函数类型定义一起使用
- 我不能将 'fill' std::vector 构造函数与 unique_ptrs 一起使用
- 为什么在template函数广播中把两个extensor表达式加在一起不正确
- C++ 如何将关键字"friend"与两个类的成员函数一起使用 相互包含
- 为什么引用不能与编译时函数一起使用?
- 为什么指针和c++中的函数放在一起
- 如何将英特尔的数学函数库与 gcc 一起使用?
- 将自动类型化 lambda 与模板化函数一起使用 - 在 g++ 5.4 中使用自动模板推导
- 在Visual Studio中,与std::async一起使用时不调用"thread_local"变量"析构函数,这是一个错误吗?
- 如何定义与将 Lambda 与捕获作为回调一起使用兼容的函数指针
- 我可以将 std::move 与不提供 move 构造函数的类一起使用吗?
- 我们可以将 Rcpp 与多个C++函数一起使用吗?
- 反转 C++ 中的 std::string 如何与此构造函数一起使用?
- 为什么在将多态行为与指向接口的指针一起使用时没有调用析构函数?
- 使用 std::vector<Particle> 粒子;函数 .at() 不能与迭代器一起使用,它作为 for 循环中的参数
- 在 c++ 中将模板与类一起使用时,类成员函数的答案错误?
- 如何将 std::unique_ptr<Parent> 与具有受保护虚拟析构函数的只读父类一起使用