将std :: bind与Concurrency :: parallel_for一起使用时编译失败

时间:2015-12-03 21:36:57

标签: c++ c++11 boost ppl

在将一些使用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::bindboost::bind完全可以互换,但情况似乎并非如此。

有人可以建议如何使用std::bind来编译上面的示例吗?

0 个答案:

没有答案