我可以假设对于任何类型T,该类型std::list<T>将具有相同的恒定大小吗?为了清楚起见,我的意思是“主要”类型本身的大小,而不是它分配的内存的大小。
对我来说,假设它T本身的大小应该只影响使用分配器分配的列表节点的大小,这似乎是合乎逻辑的。
但是,有两件事可能会导致sizeof(std::list<T>)我能想到的变化:
- 一个标准 C++ 库试图
std::list通过将一些T实例放入std::list<T>自身来“优化”类型。这对我来说似乎是个坏主意,它可能违反了标准提出的“恒定时间”要求; - 一种标准 C++,具有
std::list<T>某些类型的库特化,这些特化具有不同的大小。
我想不出(1)或(2)的任何用途,但我可能错了。
我正在考虑实现的是使用std::list<T>内部模板类使用固定大小的切片分配器。
注意:这是关于不同类型的差异T,而不是不同分配器的差异。我将对所有实例化进行显式控制,并且它们都将使用std::allocator.