gpt4 book ai didi

c++ - vector 元素是否需要可移动?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:40:43 26 4
gpt4 key购买 nike

我注意到 std::vector 对其元素类型 T 的要求从 C++03 更改为 C++0x。 T 现在不再需要可复制构造,但可移动构造就足够了。

即使我们没有潜在的重新分配,T 是否也需要它?

vector<boost::scoped_ptr<int>> x(numberElements);

我认为这里没有移动的必要。规范怎么说?

最佳答案

根据 23.3.6.2 [vector.cons] 第 4 段,您使用的构造函数需要 DefaultInsertable。由于构造函数不是要求表的构造函数之一也要求 CopyInsertable,因此不应该有任何额外的要求。根据 23.2.1 [container.requirements.general] 第 13 段,DefaultInsertable 表示以下表达式格式正确:

allocator_traits<A>::construct(m, p);

看来,这意味着答案取决于使用的分配器 A。我不太想分析 20.6.7.2 [allocator.uses.construction] 的深层含义。让我们进行讲师转义:确定这一段的含义留作练习!

关于c++ - vector 元素是否需要可移动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13111454/

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