提升ptr_list documentation表明容器使用基础std::list<void*>
。
为什么他们使用此类型而不是更专业的std::list<T*>
?
答案 0 :(得分:8)
可能会减少模板实例化的数量。如果它使用std::list<T*>
,则ptr_list<T>
的每次使用也会实例化std::list<T*>
。如果你经常使用ptr_list
,那就是很多实例化。
答案 1 :(得分:3)
这使得几乎所有代码都可以轻松共享,无论您实例化它的类型如何。几乎所有代码都在单std::list<void *>
中。每个实例化只会在需要时在T *
和void *
之间添加代码。
当然,现代编译器/链接器可以在没有这些帮助的情况下做相当多的事情,但情况并非总是如此(并且由于各种原因,有些人仍然使用较旧的工具链)。