1
4

1 回答 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 回答