在将一些使用 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
?