这段代码编译失败,我不知道这是否是因为它无法做到的,lambda表达式不从binary_function继承,或者它只是我得到的语法错误柯里化可以使用lambda函数吗?
#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;
}
小修正:lambdas与'std :: bind'和''std :: function''的实现无关 - 而且可变参数模板使它更容易/可以为无限多的参数工作。 – ltjax
@Itjax:是的,谢谢。我在那里结合了几件事。事实上,在C++ 11中,你可以自由绑定任何东西,特别是lambda。另一件我猜测是'std :: function'作为lambda表达式的接收者类型是必需的,它的实际类型是未知的。 –
有一个无法命名的类型是非常奇怪的。 – Omnifarious