容器需求已从C++ 03更改为C++ 11.虽然C++ 03有一揽子要求(例如复制构造性和向量的可赋值性),但C++ 11定义了每个容器操作的细粒度要求(第23.2节).
因此,只要您只执行某些不需要赋值的操作(构造并且push_back
是这样的操作),您可以例如在向量中存储可复制构造但不可赋值的类型(例如具有const成员的结构).; insert
不是).
我想知道的是:这是否意味着标准现在允许vector<const T>
?我没有看到任何理由它不应该 - const T
就像具有const成员的结构一样,是一种可复制构造但不可分配的类型 - 但我可能错过了一些东西.
(让我觉得我可能错过了一些东西的部分原因是,如果你试图实例化vector<const T>
,那gcc trunk会崩溃并烧掉,但是vector<T>
对于T有const成员的地方来说很好).