多年来,将 boost 功能集成到标准库中的过程变得明显。
似乎有用&实际的部分提升,即提供类型擦除的容器,已经逃过了这个过程。
这有什么特别的原因(性能损失,缺乏稳健性)吗?
是否有任何提案与在下一个标准库中合并此类功能(例如boost::any
)有关?
shared_pointer
使用类型擦除,今天的标准库还有其他设施,我们可以利用这种技术吗?
答案 0 :(得分:3)
类型擦除通常会引入额外的间接,并最终引入虚拟函数调用,从而降低性能。
最近刚刚更新的工作草案" C ++扩展库基础知识"提议(除其他功能外)boost::any
for the standard。
std::function
将是另一个例子。
答案 1 :(得分:1)
Boost.Any将其作为std::any
转换为C ++ 17,但有一些差异。与其他有用的类型构造函数一起使用:std::optional
和std::variant
。