std::move 的未定义行为

2023-11-20

来自移动页面cppreference 的

除非另有说明,所有标准库对象都具有 被移出的状态被置于有效但未指定的状态。那是, 仅限没有前提条件的函数,例如赋值 操作符,可以在对象被移动后安全地使用它

因此,从同一页面上的示例来看,下面的代码被认为是未定义的行为

vector<string> v_string;
string example = "example";
v_string.push_back(move(example));
cout << example << endl;

MSVC 不会在控制台上输出任何内容,但如果我这样做

vector<int> v_int;
int number = 10;
v_int.push_back(move(number));
cout << number << endl;

将输出 10。发生这种情况有原因吗?或者它总是未定义的行为?


未指定并不意味着未定义。

根据C++11标准,第17.3.26节:

有效但未指定的状态未指定的对象状态,除了满足对象的不变量并且对象上的操作按照其类型指定的行为之外

当对象处于有效状态时,您可以将其流式传输到输出,因为流式传输没有其他前提条件。然而whatis print 是未指定的,所以它可能什么也不打印,或者打印出你的父亲有接骨木浆果的味道。您不能安全地使用具有附加先决条件的函数,例如back()这还要求字符串非空。有效字符串可以为空。

对于未指定但有效的状态,包含旧值是完全可接受的选项。如果是基本类型,例如int简单的复制只是执行移动的最有效方法。

还应该指出的是int is not一个标准库对象,但是一个基本类型(如第 3.9.1 节中定义)。因此您的报价不适用。

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

std::move 的未定义行为 的相关文章

  • 部署 MVC4 项目时出错:找不到文件或程序集

    过去 我只需使用 Visual Studio 2012 发布到 AWS 菜单项即可部署我的 MVC4 网站 到 AWS Elastic Beanstalk 现在 程序可以在本地编译并运行 但无法部署 从消息来看 它似乎正在寻找不在当前部署的
  • Signalr 在生产服务器中总是陷入长轮询

    当我在服务器中托管应用程序时 它会检查服务器端事件并始终回退到长轮询 服务器托管环境为Windows Server 2012 R1和IIS 7 5 无论如何 我们是否可以解决这个问题 https cloud githubuserconten
  • 如何在C++中实现模板类协变?

    是否可以以这样一种方式实现类模板 如果模板参数相关 一个对象可以转换为另一个对象 这是一个展示这个想法的例子 当然它不会编译 struct Base struct Derived Base template
  • FFMPEG Seeking 带来音频伪影

    我正在使用 ffmpeg 实现音频解码器 在读取音频甚至搜索已经可以工作时 我无法找到一种在搜索后清除缓冲区的方法 因此当应用程序在搜索后立即开始读取音频时 我没有任何工件 avcodec flush buffers似乎对内部缓冲区没有任何
  • Cygwin 下使用 CMake 编译库

    我一直在尝试使用 CMake 来编译 TinyXML 作为一种迷你项目 尝试学习 CMake 作为补充 我试图将其编译成动态库并自行安装 以便它可以工作 到目前为止 我已经设法编译和安装它 但它编译成 dll 和 dll a 让它工作的唯一
  • 如何在我的应用程序中使用 Windows Key

    Like Windows Key E Opens a new Explorer Window And Windows Key R Displays the Run command 如何在应用程序的 KeyDown 事件中使用 Windows
  • 为什么 POSIX 允许在只读模式下超出现有文件结尾 (fseek) 进行搜索

    为什么寻找文件结尾很有用 为什么 POSIX 让我们像示例中那样在以只读方式打开的文件中进行查找 c http en cppreference com w c io fseek http en cppreference com w c io
  • 为什么禁止在 constexpr 函数中使用 goto?

    C 14 对你能做什么和不能做什么有规则constexpr功能 其中一些 没有asm 没有静态变量 看起来相当合理 但标准也不允许goto in constexpr功能 即使它允许其他控制流机制 这种区别背后的原因是什么 我以为我们已经过去
  • 跨多个控件共享事件处理程序

    在我用 C 编写的 Windows 窗体应用程序中 我有一堆按钮 当用户的鼠标悬停在按钮上时 我希望按钮的边框发生变化 目前我有以下多个实例 每个按钮一个副本 private void btnStopServer MouseEnter ob
  • C# 中可空类型是什么?

    当我们必须使用nullable输入 C net 任何人都可以举例说明 可空类型 何时使用可空类型 https web archive org web http broadcast oreilly com 2010 11 understand
  • 为什么模板不能位于外部“C”块内?

    这是一个后续问题一个答案 https stackoverflow com questions 4866433 is it possible to typedef a pointer to extern c function type wit
  • 编译的表达式树会泄漏吗?

    根据我的理解 JIT 代码在程序运行时永远不会从内存中释放 这是否意味着重复调用 Compile 表达式树上会泄漏内存吗 这意味着仅在静态构造函数中编译表达式树或以其他方式缓存它们 这可能不那么简单 正确的 他们可能是GCed Lambda
  • 初始化变量的不同方式

    在 C 中初始化变量有多种方法 int z 3 与 int 相同z 3 Is int z z 3 same as int z z 3 您可以使用 int z z 3 Or just int z 3 Or int z 3 Or int z i
  • 网络参考共享类

    我用 Java 编写了一些 SOAP Web 服务 在 JBoss 5 1 上运行 其中两个共享一个类 AddressTO Web 服务在我的 ApplycationServer 上正确部署 一切都很顺利 直到我尝试在我的 C 客户端中使用
  • AccessViolationException 未处理

    我正在尝试使用史蒂夫 桑德森的博客文章 http blog stevensanderson com 2010 01 28 editing a variable length list aspnet mvc 2 style 为了在我的 ASP
  • 在Linux中使用C/C++获取机器序列号和CPU ID

    在Linux系统中如何获取机器序列号和CPU ID 示例代码受到高度赞赏 Here http lxr linux no linux v2 6 39 arch x86 include asm processor h L173Linux 内核似
  • 方法参数内的变量赋值

    我刚刚发现 通过发现错误 你可以这样做 string s 3 int i int TryParse s hello out i returns false 使用赋值的返回值是否合法 Obviously i is but is this th
  • Bing 地图运行时错误 Windows 8.1

    当我运行带有 Bing Map 集成的 Windows 8 1 应用程序时 出现以下错误 Windows UI Xaml Markup XamlParseException 类型的异常 发生在 DistanceApp exe 中 但未在用户
  • 窗体最大化时自动缩放子控件

    有没有办法在最大化屏幕或更改分辨率时使 Windows 窗体上的所有内容自动缩放 我发现手动缩放它是正确的 但是当切换分辨率时我每次都必须更改它 this AutoScaleDimensions new System Drawing Siz
  • 为什么 strtok 会导致分段错误?

    为什么下面的代码给出了Seg 最后一行有问题吗 char m ReadName printf nRead String s n m Writes OK char token token strtok m 如前所述 读取字符串打印没有问题 但

随机推荐

  • 如何在 Android 中重新启动 Activity? [复制]

    这个问题在这里已经有答案了 在我正在编写的应用程序中 有一部分可以让您更改窗帘设置 问题是 在重新创建活动之前 此设置不会生效 有没有办法告诉应用程序使用 onResume 方法重新启动 希望允许它保存 onSaveInstanceStat
  • 我们如何使用 POI API 读取受保护的密码 excel 文件 (.xls)

    我刚刚学习了 POI 发现 HSSF 的读取和创建 excel 文件 xls 非常简单 但是 当我想读取受密码保护的Excel时 我发现了一些问题 我花了一个小时在互联网上找到这个解决方案 请你帮我解决这个问题 如果您能给我一个代码片段 我
  • 异步网络操作永远不会完成

    我有几个异步网络操作 它们返回可能永远不会完成的任务 UdpClient ReceiveAsync不接受CancellationToken TcpClient GetStream返回一个NetworkStream这不尊重Cancellati
  • Android 中的 java.lang.ExceptionInInitializerError

    我正在尝试创建一个可以验证人脸的 Android 应用程序 但是当我尝试在模拟器上运行我的应用程序 使用 Eclipse 时 我的 logcat 中出现以下结果 06 16 14 51 24 326 E AndroidRuntime 430
  • Spring boot JPA - 没有具有 OneToMany 关系的嵌套对象的 JSON

    我有一个项目处理对象的一些 ORM 映射 有一些 OneToMany关系等 我使用 REST 接口来处理这些对象 并使用 Spring JPA 在 API 中管理它们 这是我的 POJO 之一的示例 Entity public class
  • Django - 管理中的 UserProfile m2m 字段 - 错误

    我的模型 class UserProfile models Model TYPES CHOICES 0 u teacher 1 u student user models ForeignKey User unique True type m
  • 对于长度变化很大的输入,最佳 StringBuffer 初始容量是多少?

    大家下午好 我正在使用java lang StringBuilder来存储一些字符 我不知道要提前存储多少个字符 除了 60 的情况下 它只有 恰好 7 个字符 39 的情况下 它 大约 为 3500 个字符 1 的情况下 大约是 20k
  • Flask AttributeError:模块“app”没有属性“run”

    我的 Flask 项目的结构如下 my project app init py api static templates config py run py 应用程序 init py from flask import Flask app F
  • 获取每个 tr 的 td 值 [关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 我有以下风格的代码 tr td value Feb 23 2008 td td value Feb 25 2008 td td td tr
  • “导入错误:无法导入名称多数组”

    新程序员来了 我正在尝试在 Windows 命令提示符中运行脚本 但在导入 numpy 包时遇到问题 并且我不知道出了什么问题 如何修复它 当我在 iPython 中运行该脚本时 它运行得很好 但是 当我在命令提示符中运行它时 我得到以下信
  • 在 iPhone 中根据触摸拖动旋转图像

    我想根据用户触摸拖动的速度顺时针或逆时针方向旋转图像 我认为这可以通过一些数学和逻辑来完成 这个的代码示例是什么样的 如果您的目标是 iOS 3 2 或更高版本 则可以使用UIRotationGestureRecognizer 代码看起来像
  • 替换 DataGridView 中的 DateTime.MinValue

    我正在开发一个姓名记录应用程序 该信息存储在 SQLite 数据库中 数据库中的所有列都是 TEXT 类型 出生日期列除外 它是 DATETIME 我转移到 SQLite 数据库的原始 Access 数据库允许出生日期为空 因此当我复制它时
  • .user.ini 文件适用于子目录吗?

    是否 user ini控制文件夹特定 PHP 设置的文件也下降到子文件夹中吗 我正在阅读一些网站 他们建议这样做 尽管没有很多关于它的信息 但是我发现如果我从子文件夹运行脚本 它不会使用来自 user ini file 我是否遗漏了某些内容
  • nodejs如何从stdin读取击键

    是否可以在运行的 Nodejs 脚本中侦听传入的击键 如果我使用process openStdin 并聆听其 data 事件 然后输入被缓冲 直到下一个换行符 如下所示 stdin test js var stdin process ope
  • python 的 sys.stdin.read() 会阻塞吗?

    我正在适应这个 Django 管理命令为了我自己的目的 该脚本是一个简单的 while 循环守护进程 它从 sys stdin 读取 第 152 行 在command handle 根据协议并将结果写入 sys stdout 我希望sys
  • 方向更改后 UIView addsubview:告诉视图调整大小

    我有一个 UIView 作为纵向模式下的 XIB 该视图以编程方式添加到视图控制器中 如下所示 NSArray nibObjects NSBundle mainBundle loadNibNamed InputView owner self
  • MATLAB parfor 切片问题?

    我有一段代码可以在一系列图像中找到哈里斯角点 我需要对 92 张图像执行此操作 但速度相当慢 因此 我想并行运行代码 我下面的代码有一个与变量 corners 相关的错误 Harris corners max pts 900 corners
  • Facebook SDK 3.1 - 验证访问令牌时出错

    我正在尝试将我的应用程序转换到新的 Facebook SDK 3 1 支持 iOS6 身份验证 我让它运行得很好 所以我决定从 FB 网站上的授权应用程序列表中删除该应用程序 以测试 iOS 是否会再次请求许可 现在我第一次打电话给 FBR
  • 带有空标记的 Java StringTokenizer

    我有一个看起来像 56 0 76 0 93 1230 的字符串 我使用 StringTokenizer 将其分割为 然而 这似乎是从 93 直接跳到 1230 有没有办法让它在移动到 1230 之前返回六个空字符串 Use String s
  • std::move 的未定义行为

    来自移动页面cppreference 的 除非另有说明 所有标准库对象都具有 被移出的状态被置于有效但未指定的状态 那是 仅限没有前提条件的函数 例如赋值 操作符 可以在对象被移动后安全地使用它 因此 从同一页面上的示例来看 下面的代码被认