如何测试表达式是否是临时的?

2024-01-09

使用以下宏:

#define ASSERT_IF_TEMP(expr) static_assert(?, "Is temporary!");

问号应该填什么?


首先我们要澄清:“暂时”是什么意思?

当很多人说暂时的时候,他们的意思是不同的。从技术上来说,int()不是暂时的,但大多数人都会将它们纳入自己对该术语的含义中。从技术上讲,鉴于std::string s;, then move(s)也不是临时的,但您可能希望将其与宏视为一个。

我上面提到的第一种“临时变量”实际上是“纯右值表达式”。这些是std::string("foo") or int()之类的事情,但不是move(s)而且(当然)也不是s之类的事情。这decltype运算符为我上面谈到的第一种“临时变量”生成非引用类型。对于第二种,move(s),它们是x值,它将产生一个右值引用。对于“非临时人员”,即s在这种情况下,它将产生一个左值引用。

总而言之,我将定义三个精确的宏,您可以从中进行选择

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

如何测试表达式是否是临时的? 的相关文章

  • 添加 Nullable int 时保持 null?

    我想添加可为空的int 并保留null当所有值都是null 我想要这个结果 1 2 3 1 null 1 null null null O null 0 问题是 如果我将一个值与 null 相加 结果为 null int i1 1 int
  • 删除是如何工作的? [复制]

    这个问题在这里已经有答案了 可能的重复 C 编程 free 如何知道要释放多少 https stackoverflow com questions 1518711 c programming how does free know how m
  • linq 中使用字符串数组 c# 的 'orderby'

    假设我有一个这样的方法定义 public CustomerOrderData GetCustomerOrderData string CustomerIDs var query from a in db Customer join b in
  • CSharpRepl emacs 集成?

    我碰巧知道莫诺CSharpRepl http www mono project com CsharpRepl 是否有 emacs csharp 模式使用它在一个窗口中运行 REPL 并像 python 模式一样在另一个窗口中编译 运行 C
  • 从代码中,如何创建对存储在附加属性中的对象的属性的绑定?

    我们有一个继承的附加属性来存储一个对象 在可视化树的更下方 我们希望从代码绑定到该对象的属性 通常我们像这样构建绑定的路径部分 var someBinding new Binding Path new PropertyPath Attach
  • 在 C# 中调用 C++ 库 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我有很多用 C 编写的库 我想从 C 调用这些库 但是 我遇到了很多问题 我想知道是否有书籍或指南告诉我如何做到这一点 Dll导入 htt
  • std::call_once 可重入且线程安全吗?

    std call once http en cppreference com w cpp thread call once是线程安全的 但它也是可重入的吗 我使用 VS2012 调试和发布 进行的测试表明 调用std call once从单
  • 在开关中使用“goto”?

    我看到了一个建议的编码标准 内容如下Never use goto unless in a switch statement fall through 我不跟 这个 例外 案例到底是什么样的 这证明了goto 此构造在 C 中是非法的 swi
  • 计算另一个表达式中的 C# 表达式

    我想在另一个表达式中使用一个表达式 Expression
  • 为什么'enable_if'不能用于禁用这里声明

    include
  • 将接口转换为其具体实现对象,反之亦然?

    在 C 中 当我有一个接口和几个具体实现时 我可以将接口强制转换为具体类型 还是将具体类型强制转换为接口 这种情况下的规则是什么 Java 和 C 中都允许这两个方向 向下转型需要显式转型 如果对象类型不正确 可能会抛出异常 然而 向上转换
  • 如何在三个 IEnumerable 上使用 Zip [重复]

    这个问题在这里已经有答案了 可能的重复 使用 Linq 从 3 个集合创建项目 https stackoverflow com questions 5284315 create items from 3 collections using
  • C#6 中的长字符串插值行

    我发现 虽然字符串插值在应用于现有代码库的字符串 Format 调用时非常好 但考虑到通常首选的列限制 字符串对于单行来说很快就会变得太长 特别是当被插值的表达式很复杂时 使用格式字符串 您将获得一个可以拆分为多行的变量列表 var str
  • 使用 GCC 生成可读的程序集?

    我想知道如何使用GCC http en wikipedia org wiki GNU Compiler Collection在我的 C 源文件中转储机器代码的助记符版本 这样我就可以看到我的代码被编译成什么 你可以使用 Java 来做到这一
  • 在 OpenGL 中渲染纹理 1 到 1

    所以我想做的是使用 OpenGL 和 C 将纹理渲染到平面上 作为显示图像的一种方式 但是我需要确保在渲染纹理时没有对纹理进行任何处理 抗锯齿 插值 平滑 模糊等 这是 OpenGL 处理渲染纹理的默认方式吗 或者是否需要设置一些标志才能禁
  • 选择查询不适用于使用Parameters.AddWithValue 的参数

    C 中的以下查询不起作用 但我看不出问题所在 string Getquery select from user tbl where emp id emp id and birthdate birthdate cmdR Parameters
  • 如何调试 .NET 运行时中的内部错误?

    我正在尝试调试一些处理大文件的工作 代码本身works 但 NET 运行时本身会报告零星错误 对于上下文 这里的处理是一个 1 5GB 文件 仅加载到内存中一次 在循环中处理和释放 故意尝试重现此否则不可预测的错误 我的测试片段基本上是 t
  • 为什么以下 C 程序会出现总线错误?

    我认为这是第一个失败的 strtok 调用 好久没写C了 有点不知所措 非常感谢 include
  • 如何得知客户端从服务器的下载速度?

    根据客户的下载速度 我想以低质量或高质量显示视频 任何 Javascript 或 C 解决方案都是可以接受的 Thanks 没有任何办法可以确定 您只能测量向客户端发送数据的速度 如果没有来自客户端的任何类型的输入来表明其获取信息的速度 您
  • 结构化绑定的用例有哪些?

    C 17 标准引入了新的结构化绑定 http en cppreference com w cpp language structured binding功能 最初是proposed http www open std org jtc1 sc

随机推荐

  • 如何在 Gerrit 中创建新的补丁集?

    我是 Gerrit 新手 希望在提交新更改时创建新补丁 我使用本指南设置 Gerrithttps review typo3 org Documentation install quick html https review typo3 or
  • Ninject 程序集与引用的程序集不匹配

    Setup ASP NET MVC3 忍者 v2 2 1 4 忍者 v3 0 0 15 Ninject MVC3 v3 0 0 6 Ninject Web Common v3 0 0 7 使用 NuGet 我的 UnitTest 项目引用
  • 如何在具有圆角的超级视图中翻转非全屏 UIView?

    我正在翻转 UIView 类似于天气应用程序的页面翻转 不过 视图不是全屏的 并且超级视图有圆角 问题在于 在翻转动画期间 超级视图的圆角被黑色填充到方角 这是我设置角的方法 self view layer cornerRadius 15
  • 如何使用 javascript/jquery 从 URL 中删除获取变量和文件名?

    我正在研究这个问题 但找不到针对此特定目的的任何可靠答案 假设我有一个网址 http mysite com stuff index php search my search http mysite com stuff index php s
  • Xamarin Android - 在发布模式下打印到应用程序输出

    打补丁一些崩溃 https stackoverflow com questions 24809580 noclassdeffounderror android support v7 internal view menu menubuilde
  • 没有物理设备的配置文件

    我在这个论坛和苹果开发者论坛上经常看到这个问题 我已经按照教程学习了 6 个多小时 我想要的只是添加该应用程序 以便我可以与朋友和家人一起测试它 我没有 iPhone 我有一台 Macbook Pro 和付费的开发者注册 当我选择通用 IO
  • 在 Django 中生成带有内联摘要的列表/报告

    我正在尝试编写一个视图 该视图将生成一个报告 显示我的库存系统中的所有项目 并在某个点提供摘要 顺便说一下 这个报告纯粹是一个 HTML 模板 就我而言 每个项目都是订单的一部分 一个订单可以有多个项目 我希望能够在每个订单结束后显示基于
  • CarrierWave:为所有版本化文件创建相同、唯一的文件名

    在详细介绍之前 我先切入主题 有没有人找到一种方法让 Carrierwave 将文件名称保存为时间戳或每个文件唯一的任意字符串 默认情况下 Carrierwave 将每个文件及其备用版本保存在其自己的目录中 以型号 ID 号命名 我不喜欢这
  • Neo4j - 将匹配应用于上一场比赛的每个结果

    情况 具有许多端点的图 每个端点都与主图有一个连接 该连接可能会穿越多个中间层节点 gt 关系 gt 节点在加入主图之前 每个连接的最终节点都有特定的属性 我有一个查询沿着这条路径走并找到最终连接到主图的节点 我有另一个查询返回端点节点的列
  • 多个 JQuery 不同表单选择器

    我有两种形式one and two 并且基于提交的表单 我想在逻辑末尾根据提交的值调用一个函数 我想知道是否可以将每个选择器作为数组索引 循环或属性或其他内容检索var tagsOrAnswerers 然后也许我可以将该参数传递给我将被调用
  • 带树枝的自定义表单字段模板

    我想在树枝中创建一个自定义模板来呈现表单字段 Example form row form field 这可以通过表单主题覆盖 block form row custom code endblock form row 我想做的是这样的 blo
  • 来自 JSON 字符串数组的 MarkLogic TDE Xpath 值

    我想构建一个 tde 其中包含一行 其中包含 id 和原始文档中数组的每个值 我为每个元素获取一行 但值为空并被忽略 似乎如果上下文设置为不是数组的任何内容 uri 可以工作 但当上下文是数组时则不会 除了简单的示例之外 我正在努力寻找 M
  • Clickonce - 在 DVD 上部署,带有离线安装程序

    我正在使用 VS 2010 但在 clickonce 部署时遇到问题 我的目标是在 DVD 上分发应用程序 以便没有互联网连接的用户能够安装它 因此它需要包含 NET Framework 3 5 客户端配置文件的完整安装程序 但是 我无法实
  • 带有 Select Widget 的 Django ModelForm - 使用 object.uid 作为默认选项值而不是 object.id

    我有一个继承自 ModelForm 的表单 如下所示 class ChildModel ModelForm class Meta model Documents fields secretdocs widgets secretdocs Se
  • SQL、PL-SQL 和 T-SQL 之间有什么区别?

    SQL PL SQL 和 T SQL 之间有什么区别 谁能解释一下这三者之间的区别 并提供每一个的相关使用场景 SQL 是一种用于操作关系数据的声明性语言 表 视图 结果集等 它或多或少是标准化的 几乎所有关系数据库管理系统都使用它 SQL
  • 无法将类型 IAsyncOperation 隐式转换为 StorageFile

    我的代码到底出了什么问题 private void BrowseButton Click object sender RoutedEventArgs e FileOpenPicker FilePicker new FileOpenPicke
  • 为什么应用程序和小部件之间没有引用?

    这是后续为什么应用程序会在 sys exit 命令之后显示 https stackoverflow com questions 15688889 why will the application show after sys exit co
  • Kubernetes 秘密真的是秘密吗?

    当我开发API服务器时 我需要向API服务器提供一些帐户信息 这些信息不应该向任何人显示 K8s针对这种情况推荐了secret 所以我就使用了 但我想知道这个秘密是否真的是秘密 Secret 只是 Base 64 编码 文本 而不是 加密
  • 通过匿名类进行封闭对象转义的参考-java

    我正在阅读 Java 并发实践 下面的例子就是来自其中 我的问题是 这个引用转义是什么意思 会出现什么问题呢 this 引用如何从 doSomething e 中转义 public class ThisEscape public ThisE
  • 如何测试表达式是否是临时的?

    使用以下宏 define ASSERT IF TEMP expr static assert Is temporary 问号应该填什么 首先我们要澄清 暂时 是什么意思 当很多人说暂时的时候 他们的意思是不同的 从技术上来说 int 不是暂