此代码无法在VS2010下编译:
#include <functional>
using namespace std;
void test()
{
auto f = [] (int) {};
bind(f, 10);
}
它给出了指向bind
实现内部的长错误。
如果我切换到普通函数而不是lambda,bind
工作正常,所以我相信这是VS2010中的一个错误,但也许我错过了一些东西。
你能救我吗?
答案 0 :(得分:4)
似乎VC10无法处理lambdas作为std::bind
的参数。它似乎期望一个函数指针或一个函数对象。我不知道这是不是一个bug,但我怀疑它是,因为lambda函数应该在编译期间成为函数对象。
无论如何,如果你需要一个解决方法,这将为我编译:
std::function<void(int)> func = [] (int) {};
std::bind(func, 10);