在将一些使用boost库的旧代码迁移到C ++ 11时遇到了一个奇怪的编译错误。特别是,使用Visual Studio 2013 Professional Update 5。
以下示例代码无法编译,错误为C3848。但是,如果您将调用更改为std::bind
至boost::bind
,则代码会按预期进行编译。
#include< functional >
#include< ppl.h >
//#include< boost/bind.hpp >
class foo {
public:
bool function() const {
return true;
}
};
int main(int argc, char* argv[]) {
foo f;
Concurrency::parallel_for(0, 5, std::bind(&foo::function, &f));
//Concurrency::parallel_for(0, 5, boost::bind(&foo::function, &f));
return 0;
}
我希望std::bind
和boost::bind
完全可以互换,但情况似乎并非如此。
有人可以建议如何使用std::bind
来编译上面的示例吗?