Boost C++ 库

...世界上最受尊敬和专业设计的 C++ 库项目之一。 Herb SutterAndrei Alexandrescu, C++ 编码标准

PrevUpHomeNext

未来工作

替代 RTTI 系统
复制 traits
并行算法
有序多态集合

Boost.PolyCollection 的审阅者和用户提出的一些功能正在考虑纳入库的未来版本中。

Boost.PolyCollection 可以扩展为在 RTTI 受限的情况下使用 Boost.TypeIndex。进一步考虑这个想法,某些环境(例如游戏引擎)提供自己的 RTTI 框架并不罕见:Boost.PolyCollection 更具雄心的扩展将是通过某种 traits 类使其可配置为用户提供的 RTTI,该 traits 类指定 std::type_infotypeid 的替换。

boost::base_collection 要求存储的对象是 MoveConstructibleMoveAssignable;不幸的是,习惯上限制 OOP 层次结构中的复制以避免切片,这将迫使用户重新审视他们的类定义以便使用 Boost.PolyCollection。这可以通过提供一个可配置的 traits 类来缓解,其中复制和赋值可以在外部定义

template<typename T>
struct copy_traits
{
  void construct(void*,T&&);
  void assign(T&,T&&);
};

默认实现会求助于常规的 placement newT::operator=

C++17 引入了 并行算法,例如 std::for_each 的并行版本;那么,提供相应的 Boost.PolyCollection 特定的算法 是很自然的。多态集合的分段性质使它们特别适合并行处理。

用户表示对多态集合感兴趣,其中元素在其段内保持有序,并且可以选择排除重复项,很像 boost::flat_set/boost::flat_multiset 在其内部数据向量上所做的那样。 未解决的问题仍然是这些集合是否也应该保证段之间的一些顺序(当前的集合没有),以允许定义容器级别的 operator< 和相关运算符。


PrevUpHomeNext