gpt4 book ai didi

c++ - std::vector::resize(size_type) 需要 CopyInsertable?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:27:01 25 4
gpt4 key购买 nike

这个问题是在我回答this another question的时候提出的.

N3337 23.3.6.3“vector 容量”说(在 770 页):

void resize(size_type sz);

Effects: If sz <= size(), equivalent to erase(begin() + sz, end());. If size() < sz, appends sz - size() value-initialized elements to the sequence.

Requires: T shall be CopyInsertable into *this.

然而,clang++ says it's okay though T is not copyable.我认为 resize(size_type) 是有道理的只需要可破坏/可移动/默认可构造。如果 sz <= size 它会破坏, 追加(默认构造,容量不够则销毁移动)if size() < sz .

什么是真理?是标准缺陷吗?还是clang++和我都错了?

最佳答案

你是对的。 http://cplusplus.github.io/LWG/lwg-defects.html#2033 为 C++14 修复了 C++11 中的一个缺陷

当前的措辞是:

Effects: If sz < size(), erases the last size() - sz elements from the sequence. Otherwise, appends sz - size() default-inserted elements to the sequence.

Requires: T shall be MoveInsertable and DefaultInsertable into *this.

关于Destructible的要求在表 95 中,适用于所有容器的所有操作,而不仅仅是 resize() .

关于c++ - std::vector::resize(size_type) 需要 CopyInsertable?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30937208/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com