问问题
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 回答