Boost.PolyCollection 的审阅者和用户提出的一些功能正在考虑纳入库的未来版本中。
Boost.PolyCollection 可以扩展为在 RTTI 受限的情况下使用 Boost.TypeIndex。进一步考虑这个想法,某些环境(例如游戏引擎)提供自己的 RTTI 框架并不罕见:Boost.PolyCollection 更具雄心的扩展将是通过某种 traits 类使其可配置为用户提供的 RTTI,该 traits 类指定 std::type_info
和 typeid
的替换。
boost::base_collection
要求存储的对象是 MoveConstructible
和 MoveAssignable
;不幸的是,习惯上限制 OOP 层次结构中的复制以避免切片,这将迫使用户重新审视他们的类定义以便使用 Boost.PolyCollection。这可以通过提供一个可配置的 traits 类来缓解,其中复制和赋值可以在外部定义
template<typename T> struct copy_traits { void construct(void*,T&&); void assign(T&,T&&); };
默认实现会求助于常规的 placement new
和 T::operator=
。
C++17 引入了 并行算法,例如 std::for_each
的并行版本;那么,提供相应的 Boost.PolyCollection 特定的算法 是很自然的。多态集合的分段性质使它们特别适合并行处理。
用户表示对多态集合感兴趣,其中元素在其段内保持有序,并且可以选择排除重复项,很像 boost::flat_set
/boost::flat_multiset
在其内部数据向量上所做的那样。 未解决的问题仍然是这些集合是否也应该保证段之间的一些顺序(当前的集合没有),以允许定义容器级别的 operator<
和相关运算符。