如何使用 boost::object_pool<>::construct 并将非常量引用作为构造函数参数?
是否可以以某种方式将 boost::object_pool<>::construct 与非常量引用一起使用?
以下代码片段无法编译(VS2010):
foo::foo(bar & b)
{
}
static boost::shared_ptr<foo> foo::create(bar & b)
{
return boost::shared_ptr<foo>(foo_pool.construct(b),
boost::bind(& boost::object_pool<foo>::destroy, & foo_pool, _1));
}
VS2010 抱怨无法转换 bar &到const栏&。看看 boost::object_pool<>::construct ,原因很清楚:
element_type * construct(const T0 & a0)
但我无法将 ctor 参数设置为 const。有没有办法让 boost::object_pool<>与我的 foo 类一起工作吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
使用
boost::ref
:boost::ref
创建一个reference_wrapper
。因为它使用指针,所以可以根据需要进行复制,并隐式取消引用为对原始值的引用。Use
boost::ref
:boost::ref
makes areference_wrapper
. Because that uses a pointer, it can be copied around however you wish, and implicitly dereferenced into a reference to the original value.