std::array 是可移动的吗?

2024-01-25

std::array 是可移动的吗?

In Bjarne Native 2012 演示幻灯片 http://ecn.channel9.msdn.com/events/GoingNative12/GN12Cpp11Style.pdf(幻灯片 41)列出了std::array作为唯一不可移动的容器之一。

快速查看 gcc 4.8 库源代码似乎证实了这一点std::array不可移动:

标准::向量:

/* @brief  %Vector move constructor.
   ...       */
  vector(vector&& __x) noexcept
  : _Base(std::move(__x)) { }

而在 std::array 中,接收右值引用参数的唯一方法是随机元素访问,这避免了通过复制返回:

get(array<_Tp, _Nm>&& __arr) noexcept
    { /*...*/ return std::move(get<_Int>(__arr)); }

移动构造函数和移动赋值是用于std::array默认创建,或者是std::array不可移动?如果无法移动,为什么std::array期间无法移动std::vector can?


std::array仅当其包含的物体可移动时才可移动。

std::array与其他容器有很大不同,因为容器对象包含存储,而不仅仅是指向堆的指针。移动一个std::vector只复制一些指针,并且包含的​​对象并不明智。

Yes, std::array使用默认的移动构造函数和赋值运算符。作为聚合类,不允许定义任何构造函数。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

std::array 是可移动的吗? 的相关文章

随机推荐

  • 访问 ActiveDirectory 的代码的单元测试

    对访问 ActiveDirectory 的应用程序进行单元测试和 或模拟对 AD 的依赖关系的最佳方法是什么 所有必需的类型 例如DirectorySearcher and DirectoryEntry看起来并不容易被嘲笑 我们有类似的方法
  • 使用 htaccess 文件删除 html 扩展名

    我知道这是一个非常常见的话题 但没有一个解决方案适合我 我尝试过几个答案 answer 1 https stackoverflow com questions 15728888 how do i remove html extensions
  • C++ 指针数组:删除还是删除[]?

    考虑以下代码 class Foo Monster monsters 6 Foo for int i 0 i lt 6 i monsters i new Monster virtual Foo 什么是正确的析构函数 this Foo Foo
  • 使用C打开目录

    我接受通过命令行输入的路径 当我做 dir opendir args 1 它不会进入循环 即dir null 如何将命令行输入传递给 dir 指针 void main int c char args DIR dir struct diren
  • 从 IzPack 调用 Java 类

    如何从 IzPack 调用 Java 类的方法 静态方法是可以的 我需要能够传递参数 谢谢你 背景资料 我正在尝试编写一个 IzPack 安装程序 它能够检测以前安装的应用程序版本 在发现它并不真正支持此功能 Windows 除外 后 我认
  • SQLite 删除查询不起作用?

    我有以下代码来从名为 posts 的表中删除一行 由于某种原因 该帖子没有被删除 我还尝试通过命令行手动管理命令 效果很好 我也确信 post id 是正确的并且不为空 因为我也尝试过将其传回并打印它并且 ID 显示正确 我应该提到它不会吐
  • Pandas:在每 60 秒的 bin 中仅保留第一行数据

    在 pandas 中仅保留每 60 秒数据箱的第一行的最佳方法是什么 即对于在增加的时间发生的每一行t 我想删除所有出现的行t 60秒 我知道有一些组合groupby first 我可能可以使用 但是我见过的代码示例 例如使用pandas
  • TFSBuild/MSBuild 和项目参考与文件参考

    我们有一个使用项目引用的大型 VS 解决方案 该解决方案由 TFS Build 构建 如下所示 Solution Project 1 Project 2 Project Project N 由于解决方案太大 我们有几个日常使用的较小解决方案
  • 如何显示 tiff 图像?

    我完全迷失了 我需要一些人来指导我 我看过很多帖子 但没有解释如何显示 tif 图像 我在哪里可以找到一些教程 如果可能的话 我需要从一开始 或者如果你能帮助我那就太好了 我只是一个持有图像的新手 我使用 mvc 4 正如您可能发现的那样
  • 命令提示符中“cls”之后但不在“cls”之前的彩色文本

    我有一个 python 程序 我试图在命令提示符中使用 ANSI 代码以彩色文本打印 Hello 当我正常打印时 它不起作用 它只是打印 和文本 但是当我在清除命令提示符后打印它时 它工作正常 有人可以解释一下这种奇怪的性质吗 我搜索了这个
  • 单个 TextView 中的多个 TypeFace

    我想将第一个字符设置为TextView with a TypeFace以及具有不同类型面孔的第二个角色 依此类推 我读过这个例子 Spannable str Spannable textView getText str setSpan ne
  • 在 Symfony2 中测试文件上传

    在 Symfony2 文档中 它给出了一个简单的示例 client gt request POST submit array name gt Fabien array photo gt path to photo 模拟文件上传 然而 在我的
  • JPA - 我可以使用 @DiscriminatorValue 创建一个没有自己的表的实体类吗?

    我使用带有联合继承的 JPA 和如下所示的数据库结构 ACTION ACTION ID ACTION MAPPING ID ACTION TYPE DELIVERY CHANNEL ACTION ACTION ID CHANNEL ID O
  • WPF 交互触发器在样式中调用视图模型上的命令[重复]

    这个问题在这里已经有答案了 可能的重复 如何在样式设置器中添加混合行为 https stackoverflow com questions 1647815 how to add a blend behavior in a style set
  • 您可以使用类 C 语言对 FPGA 进行编程吗? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 在大学里 我用类似 C 的语言编写了 FPGA 不过 我也知道人们通常使用 Verilog 或 VHD
  • 静态类必须从对象派生 (C#)

    我在 C 中遇到问题 输出状态为 Error 1 Static class WindowsFormsApplication1 Hello2 cannot derive from type System Windows Forms Form
  • Celery AttributeError:异步错误

    我在 Mac OS X 10 13 4 上本地运行 RabbitMQ 和 Celery 当我运行 add delay x y 时 以下代码在本地运行 usr bin env python from celery import Celery
  • SSH 和 -bash:fork:无法分配内存 VPS Ubuntu

    我在 Ubuntu 12 04 VPS Nginx Unicorn 上托管我的 Rails 应用程序 部署后一切正常 但几个小时后 当我 ssh 到 VPS 时 我收到此消息 bash fork Cannot allocate memory
  • 如何为谷歌地图设置自定义标记标题

    如何设置包含信息和按钮的样式自定义标记标题 片段 我已经有一个自定义标记图标图像集 现在我需要一个自定义弹出窗口 当用户点击标记时 该窗口将包含某些信息和一个按钮 这与我想要实现的目标很接近 自定义标题 片段示例 LatLng huduma
  • std::array 是可移动的吗?

    std array 是可移动的吗 In Bjarne Native 2012 演示幻灯片 http ecn channel9 msdn com events GoingNative12 GN12Cpp11Style pdf 幻灯片 41 列