1312 次
1 回答
1
似乎boost::factory<S*>坚持将其论点绑定到参考:
boost::factory<S*> factory;
factory(17); // error
int argument(17);
factory(argument); // OK
基于此,似乎boost::function<S*(int)>将参数传递为int没有完美转发它,而std::function<S*(int)>似乎对参数使用完美转发。结果,参数不能绑定到boost::factory<S*>参数。
当使用gcc通过作品std::function<...>传递参数时const&:
std::function<S*(int const&)> factory = boost::factory<S*>();
不幸的是,同样的解决方法不适用于std::function<...>from libc++。既然您说您尝试使用 gcc 编译代码,这可能不是什么大问题。
于 2013-11-05T00:19:09.593 回答