gpt4 book ai didi

c++ type trait to say "trivially movable"- 例子

转载 作者:太空狗 更新时间:2023-10-29 22:57:09 25 4
gpt4 key购买 nike

我会定义“平凡可 move ”

Calling the move constructor (or the move assignment operator) is equivalent to memcpy the bytes to the new destination and not calling the destructor on the moved-from object.

例如,如果您知道此属性成立,则可以使用 realloc 来调整 std::vector 或内存池的大小。

失败的类型通常会有指向其内容的指针,需要由 move 构造函数/赋值运算符更新。

我能找到的标准中没有这样的类型特征。我想知道这是否已经有一个(更好的)名称,是否已经过讨论以及是否有一些库正在使用这种特性。

编辑 1:

从前几条评论来看,std::is_trivially_move_constructiblestd::is_trivially_move_assignable 不等同于我正在寻找的内容。我相信他们会为包含指向自身的指针的类型提供 true,因为读取您自己的成员似乎属于“琐碎”操作。

编辑 2:

如果实现得当,指向自身的类型将不再是 trivially_move_constructible 或 move_assignable,因为 move 构造函数/move 赋值运算符不再是微不足道的了。不过,我们应该能够说 unique_ptr 可以安全地复制到一个新位置,前提是我们不调用它的析构函数。

最佳答案

我认为您需要的是提案 P1144 中的 std::is_trivially_relocatable .不幸的是,该提案没有进入 C++20 ,所以我们不应该期望它在 2023 年之前出现。这很可悲,因为这种类型特征将为 std::vector 和类似类型带来巨大的优化。

关于c++ type trait to say "trivially movable"- 例子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45747932/

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