为什么boost :: ptr_list使用底层的void *?

时间:2012-02-19 17:40:54

标签: c++ boost

提升ptr_list documentation表明容器使用基础std::list<void*>

为什么他们使用此类型而不是更专业的std::list<T*>

2 个答案:

答案 0 :(得分:8)

可能会减少模板实例化的数量。如果它使用std::list<T*>,则ptr_list<T>的每次使用也会实例化std::list<T*>。如果你经常使用ptr_list,那就是很多实例化。

答案 1 :(得分:3)

这使得几乎所有代码都可以轻松共享,无论您实例化它的类型如何。几乎所有代码都在单std::list<void *>中。每个实例化只会在需要时在T *void *之间添加代码。

当然,现代编译器/链接器可以在没有这些帮助的情况下做相当多的事情,但情况并非总是如此(并且由于各种原因,有些人仍然使用较旧的工具链)。