黑客入侵Boost 1.54 MultiIndex的移动语义?

时间:2017-02-17 00:25:58

标签: c++ boost

我正在开展一个我们选择使用Boost :: MultiIndex容器的项目。很酷,我喜欢它。但是,我们使用Boost 1.54在构建目标上遇到问题,因为在该版本中容器不支持元素的移动语义。这是一个问题,因为元素具有不可复制的成员。这意味着它们也是隐含的不可复制的。

我可以提供一个完整的例子,但这确实是一个最佳实践问题,而不是一个细节问题:

class ContainerElement
{
public:
   someMethods()
   ...

private:
  NonCopyableEvent event;
};

我们有问题类:

class NonCopyableEvent : noncopyable
{
private:
  /* some project-specific stuff regarding the global scheduler. */
};

好的,我的三个主要策略是:

  1. 放弃对Boost 1.54的支持。我认为这是一个有效的建议,因为其中的MultiIndex版本已经很老了,我们真的不应该使用它。
  2. 追溯添加编译器条件以删除不可复制的状态。这样做意味着我需要注意副本的语义。
  3. 破解ContainerElement的复制构造函数以复制所有内容,但移动NonCopyableEvent这也是我不喜欢的,原因与上述类似。< / LI>

    主要关注的是事件是指全局事件,并且复制该事件将是完全不可接受的。有人可以在这里给出一些设计指导吗?

0 个答案:

没有答案