【发布时间】:2015-06-19 11:37:59
【问题描述】:
这个问题是在我回答this another question时提出的。
N333723.3.6.3 “向量容量”说(在 770 页):
void 调整大小(size_type sz);
效果:如果
sz <= size(),相当于erase(begin() + sz, end());。如果size() < sz,则追加sz - size()序列的值初始化元素。要求:T 应可复制插入到 *this 中。
但是,clang++ says it's okay though T is not copyable. 我认为resize(size_type) 只需要可破坏/可移动/默认可构造是有道理的。如果sz <= size 则销毁,如果size() < sz 则追加(使用默认构造,如果容量不足则销毁和移动)。
什么是真理?是标准缺陷吗?还是我和clang++都搞错了?
【问题讨论】:
标签: c++ c++11 language-lawyer