0

在将一些使用 boost 库的旧代码迁移到 C++11 时遇到一个奇怪的编译错误。具体来说,使用 Visual Studio 2013 Professional Update 5。

以下示例代码无法编译并出现错误 C3848。但是,如果您将调用更改std::bindboost::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

4

0 回答 0