Lambda和绑定在VS2010中不能一起工作

时间:2011-02-21 10:04:46

标签: c++ lambda c++11 bind

此代码无法在VS2010下编译:

#include <functional>

using namespace std;

void test()
{
    auto f = [] (int) {};
    bind(f, 10);
}

它给出了指向bind实现内部的长错误。 如果我切换到普通函数而不是lambda,bind工作正常,所以我相信这是VS2010中的一个错误,但也许我错过了一些东西。 你能救我吗?

1 个答案:

答案 0 :(得分:4)

似乎VC10无法处理lambdas作为std::bind的参数。它似乎期望一个函数指针或一个函数对象。我不知道这是不是一个bug,但我怀疑它是,因为lambda函数应该在编译期间成为函数对象。

无论如何,如果你需要一个解决方法,这将为我编译:

std::function<void(int)> func = [] (int) {};
std::bind(func, 10);