如何以编程方式确定 C++ 中的表达式是右值还是左值?

2023-12-22

在 C++ 中确定表达式是右值还是左值的最佳方法是什么?也许,这在实践中没有用,但由于我正在学习右值和左值,我认为有一个函数会很好is_lvalue如果传入输入的表达式是左值,则返回 true,否则返回 false。

Example:

std::string a("Hello");
is_lvalue(std::string()); // false
is_lvalue(a); // true  

大部分工作已经由 stdlib 为您完成,您只需要一个函数包装器:

template <typename T>
constexpr bool is_lvalue(T&&) {
  return std::is_lvalue_reference<T>{};
}

如果你通过了std::string那么左值T将推导出std::string& or const std::string&,对于右值,它将推论为std::string

注意雅克的回答 https://stackoverflow.com/a/36312021/1013719将返回不同的类型,这允许更大的灵活性,您应该阅读该答案并可能使用它。

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

如何以编程方式确定 C++ 中的表达式是右值还是左值? 的相关文章

  • 我应该把 try/catch 和“using”语句放在哪里? [复制]

    这个问题在这里已经有答案了 可能的重复 try catch using 正确的语法 https stackoverflow com questions 4590490 try catch using right syntax 我想try c
  • 编写此代码片段的有效方法是什么? [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 更有效和 或更短地重写此代码以节省字节并显得不那么冗长的方法 if N 2 0 N 6 N 8 N 10 N 12 N 14 N 16 N
  • WebClient.DownloadDataAsync 冻结了我的 UI

    我在 Form 构造函数中的 InitializeComponent 之后有以下代码 using WebClient client new WebClient client DownloadDataCompleted new Downloa
  • 元组在 VS2012 中如何工作?

    Visual Studio 2012 功能 tuples但不是可变参数模板 这是如何完成的 如何在不使用可变模板的情况下实现元组 简而言之 微软做了与之前在 NET 中实现类似元组的数据类型完全相同的事情 创建许多版本 每个版本都有固定数量
  • MFC CList 支持复制分配吗?

    我在 MSVC 中查找了 CList 定义afxtempl h http www cppdoc com example mfc classdoc MFC AFXTEMPL H html并记录在MSDN http msdn microsoft
  • 异常堆栈跟踪不显示抛出异常的位置

    通常 当我抛出异常 捕获它并打印出堆栈跟踪时 我会看到抛出异常的调用 导致该异常的调用 导致该异常的调用that 依此类推回到整个程序的根 现在它只向我显示异常所在的调用caught 而不是它所在的地方thrown 我不明白是什么改变导致了
  • 将 OpenCV Mat 转换为数组(可能是 NSArray)

    我的 C C 技能很生疏 OpenCV 的文档也相当晦涩难懂 有没有办法获得cv Mat data属性转换为数组 NSArray 我想将其序列化为 JSON 我知道我可以使用 FileStorage 实用程序转换为 YAML XML 但这不
  • 司机和提供商之间的区别

    数据库中的驱动程序和提供程序有什么区别 有没有解释一下 不胜感激 样本 ADO NET driver for MySQL vs providerName System Data EntityClient 来自 MSDN 论坛 驱动程序是安装
  • 如何在win32中使用GetSaveFileName保存文件?

    我编写此代码是为了获取 fileName 来保存我的文件 include stdafx h include
  • 在 C# 中何时使用 ArrayList 而不是 array[]?

    我经常使用一个ArrayList而不是 正常 array 当我使用时 我感觉好像我在作弊 或懒惰 ArrayList 什么时候可以使用ArrayList在数组上 数组是强类型的 并且可以很好地用作参数 如果您知道集合的长度并且它是固定的 则
  • 如何在 C# 中获取 Json 数组?

    我有一个像这样的 Json 字符串 我想将它加载到 C 数组中 当我尝试这样做时 我收到异常 我的字符串 customerInformation customerId 123 CustomerName Age 39 Gender Male
  • ALTER TABLE ... ADD CONSTRAINT 失败时将事务回滚到保存点

    有没有办法在事务中添加检查约束and如果失败回滚到以前的保存点 而不是回滚整个事务 就我而言 当 ALTER TABLE ADD CONSTRAINT 命令失败时 事务无法回滚到保存点 尝试这样做会引发 InvalidOperationEx
  • 浮点字节序?

    我正在为实时海上模拟器编写客户端和服务器 并且由于我必须通过套接字发送大量数据 因此我使用二进制数据来最大化可以发送的数据量 我已经了解整数字节顺序以及如何使用htonl and ntohl为了规避字节顺序问题 但我的应用程序与几乎所有模拟
  • 如何在dll级别读取app.config? [复制]

    这个问题在这里已经有答案了 我在一个解决方案中有一个控制台应用程序项目和库项目 dll The 图书馆项目有 app config 文件 我在其中存储我在库中使用的一些键值对 控制台应用程序引用此 dll 我有另一个 app config
  • 在哪里可以下载没有 Visual Studio 2010 的 C# 4.0 编译器?

    我知道 CTP VS 2010 映像 但我可以只下载 NET Framework 4 0 和 C 编译器吗 AFAIK VS 2010 CTP 仅作为 VM 映像提供 我不相信 Microsoft 发布了 VS 的安装程序 其中一个绝对不适
  • “必须声明标量变量”错误[重复]

    这个问题在这里已经有答案了 必须声明标量变量 Id SqlConnection con new SqlConnection connectionstring con Open SqlCommand cmd new SqlCommand cm
  • printf或iostream如何指定点后的最大位数

    字符串采用什么格式printf or iomanip我应该使用 iostream 中的运算符以以下格式打印浮点数 125 0 gt 125 125 1 gt 125 1 125 12312 gt 125 12 1 12345 gt 1 12
  • 将 Swagger 与命名空间版本的 WebApi 结合使用

    我已经找到了如何使用基于名称空间的 WebAPI 版本这个班 https aspnet codeplex com SourceControl changeset view dd207952fa86 Samples WebApi Namesp
  • 使用 C# 动态创建按钮并按预定义的顺序放置它们

    NET 4 5 C 创建 Windows 窗体 我想动态创建和添加按钮并为其分配单击事件 但希望它们以特定的方式动态放置 就像图像一样 我的问题是如何以上述方式动态放置按钮 即 4x4 格式 一行 4 个按钮 4 列 但行数不受限制 是否可
  • SQL Server“未找到网络路径”在不同环境中随机且不频繁地发生

    类似 如果不是同一个问题 随机遇到网络路径未找到异常 https stackoverflow com questions 38696448 network path not found exception encountered rando

随机推荐

  • CSS 选择器中的类名区分大小写吗?

    我一直在到处读到 CSS 不区分大小写 但我有这个选择器 holiday type Selfcatering 当我在 HTML 中使用它时 像这样 会被拾取 div class holiday type Selfcatering 如果我像这
  • H2O 目标均值编码器“帧按相同顺序发送”错误

    我按照 H2O 示例在 Sparking Water 中运行目标均值编码 sparking water 2 4 2 和 H2O 3 22 04 它在以下所有段落中运行良好 from h2o targetencoder import Targ
  • rdpmc:令人惊讶的行为

    我试图理解 rdpmc 指令 因此我有以下 asm 代码 segment text global start start xor eax eax mov ebx 10 loop dec ebx jnz loop mov ecx 1 lt l
  • Objective C 未定义符号编译错误

    请帮助 我在目标 c 中的第一个程序 逐字逐句地遵循教程 但它给了我这个错误 我不太知道如何阅读目标 c SimpleCar h import
  • Facebook 请求代码

    我有一个 Activity 应该处理来自 Facebook SDK 和其他自定义 Activity 的结果 我在哪里可以找到 Facebook SDK 使用的 requestCodes 以免我的活动使用相同的 requestCodes 我应
  • EditText 自动换行

    我有这样的布局
  • 如何更改 html5 canvas 的尺寸而不缩放内容

    我像这样初始化画布
  • CXF - Wsdl2java - XX 属性已定义

    我使用 CXF 生成客户端类来访问 Web 服务服务器 Web 服务基于 WCF NET 当我调用 wsdl2java 时 出现以下错误 The id property is already defined use
  • 单元测试中未定义注入的依赖关系

    我是 Angular 的新手 不太清楚依赖注入到底是如何工作的 我的问题是我的服务 A 依赖于服务 B 但是当我将服务 A 注入到我的测试中时 服务 B 变得未定义 我见过在对 AngularJS 服务进行单元测试时注入依赖服务 https
  • 了解模数运算符 %

    我根据以下表达式理解模运算符 7 5 这将返回 2 因为 5 会变成 7 一次 然后给出剩下的 2 但是当您反转此语句以阅读时 我会感到困惑 5 7 这给了我 5 的值 这让我有点困惑 7虽然不能整成5 但有一部分能整成5 为什么不是没有余
  • 如何在 OSX 上自动加载 R 中的设置?如何找到R_HOME、配置Rprofile.site等?

    我有一台 Macintosh 我试图自动加载包 自制函数 并在每次启动 R 时使用修改后的设置 我相信这可以通过名为 Rprofile site 的文件并创建函数 First 和 Last 来完成在该文件中 一个问题是 我不知道我的 R H
  • 为什么商店负载屏障被认为是昂贵的?

    大多数 CPU 架构都会重新排序存储加载操作 但我的问题是为什么 我对商店负载屏障的解释如下 x 50 store load barrier y z 此外 与释放和获取语义相比 我不明白这个屏障在无锁编程中有何用处 简答 存储加载屏障可防止
  • 正则表达式:修剪字符串的一部分并返回剩下的内容

    我尝试使用正则表达式来获取字符串 12344dfdfsss isa 中 后面的内容 在本例中我想从字符串中获取 isa 我找到了这些答案 如何使用 RegExp 删除大字符串中的一小部分字符串 https stackoverflow com
  • 离线时如何安装conda环境?

    我想在没有网络连接的机器上创建 conda 环境 到目前为止我所做的是 在连接到互联网的机器上 conda create n python3 python 3 4 anaconda Conda 将所有相关包存档到 Anaconda pkgs
  • ASP.NET 依赖注入 HTTP 模块(MS 企业库)

    我一直按照 Microsoft Enterprise Library 5 0 文档中的步骤创建一个 HTTP 模块 将对 Enterprise Library 容器的引用注入到 ASP NET Web 应用程序的页面中 它包含以下代码 也出
  • .Net 中(对称)加密的最佳实践?

    什么是加密 SQL 数据库中某些敏感或个人身份数据的 最佳实践 根据 PCI HIPAA 或其他适用的合规标准 这里有很多关于解决方案各个方面的问题 但我还没有看到任何在高层讨论该方法的问题 经过一段时间的观察 我得出以下结论 使用 Cry
  • SwiftUI 添加反转蒙版

    我正在尝试向两个形状添加蒙版 以便第二个形状遮盖第一个形状 如果我做类似的事情Circle mask Circle offset 这会产生相反的效果 防止第一个圆之外的任何内容可见 For UIView答案在这里 iOS 在drawRect
  • 应该使用 NIB 或 iPhone 中的代码创建视图吗?

    使用 Interface Builder 设计视图时有性能 开发缺点或优点吗 通常您想使用 Interface Builder 您希望通过编程接口执行此操作有几个原因 它是更被接受的创建用户界面的方式 因为它的简单性和视觉优势是您无法通过简
  • 逗号分隔文本的正则表达式

    我创建一个文本字段来添加用逗号分隔的标签 例如 php jquery js ruby on Rails 该字段类似于 stakoverflow 上的字段 您可以在其中为帖子添加标签 我想验证输入以确保标签输入正确 这意味着用户只能输入字母
  • 如何以编程方式确定 C++ 中的表达式是右值还是左值?

    在 C 中确定表达式是右值还是左值的最佳方法是什么 也许 这在实践中没有用 但由于我正在学习右值和左值 我认为有一个函数会很好is lvalue如果传入输入的表达式是左值 则返回 true 否则返回 false Example std st