【发布时间】:2013-11-04 23:31:51
【问题描述】:
我正在尝试在 gcc 4.7.2 上将一些代码转换为 C++11。部分代码包括将boost::factory 分配给boost::function。但是,如果我将其更改为 std::function,编译将失败并出现大量警告。这是重现错误的示例代码:
#include <boost/functional/factory.hpp>
#include <boost/function.hpp>
#include <functional>
struct S {
S(int) {}
};
int main() {
boost::function<S*(int)> b = boost::factory<S*>(); // ok
std::function<S*(int)> s = boost::factory<S*>(); // error
}
这给了error: no match for call to ‘(boost::factory<S*>) (int)’
有趣的是,如果S 不接受任何参数,std::function<S*()> 会毫无怨言地分配给boost::factory。为什么这不起作用?是否有解决方法允许将boost::factory 分配给std::function?我正在使用 Boost.1.53
【问题讨论】:
标签: c++ gcc boost std-function