具有适用于左值和右值的引用参数的 C++ 函数

2024-03-05

我想要一个 C++ 函数,它接受一个参数,即一个引用,并且适用于左值和右值相同的语法.

举个例子:

#include <iostream>
using namespace std;

void triple_lvalue(int &n) {
  n *= 3;
  cout << "Inside function: " << n << endl;
}

void triple_rvalue(int &&n) {
  n *= 3;
  cout << "Inside function: " << n << endl;
}

int main() {
  int n = 3;
  triple_lvalue(n);
  cout << "Outside function: " << n << endl;
  triple_rvalue(5);
}

Output:

Inside function: 9
Outside function: 9
Inside function: 15

这段代码有效。但我的案例需要两个不同的函数,第一个函数是我通过的n(左值)和3(右值)。我希望我的函数的语法能够很好地处理两者,而不需要重复任何代码。

谢谢你!


这是什么转发参考 https://en.cppreference.com/w/cpp/language/reference#Forwarding_references应该做的。它可以与左值和右值一起使用,并保留函数参数的值类别。

转发引用是一种特殊的引用,它保留 函数参数的值类别,使得可以 通过以下方式转发std::forward https://en.cppreference.com/w/cpp/utility/forward.

e.g.

template <typename T>
void triple_value(T &&n) {
  n *= 3;
  cout << "Inside function: " << n << endl;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

具有适用于左值和右值的引用参数的 C++ 函数 的相关文章

  • 每个托管线程是否都有自己对应的本机线程?

    我想知道是否在 Net 中创建托管线程 通过调用Thread Start 导致在后台创建一个本机线程 那么托管线程是否有对应的本机线程呢 如果是 当托管线程等待或睡眠时 是否意味着相应的本机线程也在等待或睡眠 是的 NET 线程映射到所有当
  • Directory.Delete 之后 Directory.Exists 有时返回 true ?

    我有非常奇怪的行为 我有 Directory Delete tempFolder true if Directory Exists tempFolder 有时 Directory Exists 返回 true 为什么 可能是资源管理器打开了
  • 如何将非静态类成员“std::bind”绑定到 Win32 回调函数“WNDPROC”?

    我正在尝试将非静态类成员绑定到标准WNDPROC http msdn microsoft com en us library ms633573 aspx功能 我知道我可以通过将类成员设为静态来简单地做到这一点 但是 作为一名 C 11 ST
  • 确保 StreamReader 不会挂起等待数据

    下面的代码读取从 tcp 客户端流读取的所有内容 并且在下一次迭代中它将仅位于 Read 上 我假设正在等待数据 我如何确保它不会在没有任何内容可供读取时返回 我是否必须设置低超时 并在失败时响应异常 或者有更好的办法吗 TcpClient
  • 提交后禁用按钮

    当用户提交付款表单并且发布表单的代码导致 Firefox 中出现重复发布时 我试图禁用按钮 去掉代码就不会出现这个问题 在firefox以外的任何浏览器中也不会出现这个问题 知道如何防止双重帖子吗 System Text StringBui
  • ClickOnce 应用程序错误:部署和应用程序没有匹配的安全区域

    我在 IE 中使用 FireFox 和 Chrome 的 ClickOnce 应用程序时遇到问题 它工作正常 异常的详细信息是 PLATFORM VERSION INFO Windows 6 1 7600 0 Win32NT Common
  • 复制 std::function 的成本有多高?

    While std function是可移动的 但在某些情况下不可能或不方便 复制它会受到重大处罚吗 它是否可能取决于捕获变量的大小 如果它是使用 lambda 表达式创建的 它依赖于实现吗 std function通常被实现为值语义 小缓
  • 在 LINQ 中按 Id 连接多表和分组

    我想按categoryId显示列表产品的名称组 这是我的代码 我想要我的视图显示结果 Desktop PC HP Red PC Dell Yellow PC Asus Red SmartPhone Lumia 720 Blue 我的组模型
  • 在 C 中匹配二进制模式

    我目前正在开发一个 C 程序 需要解析一些定制的数据结构 幸运的是我知道它们是如何构造的 但是我不确定如何在 C 中实现我的解析器 每个结构的长度都是 32 位 并且每个结构都可以通过其二进制签名来识别 举个例子 有两个我感兴趣的特定结构
  • 使用接口有什么好处?

    使用接口有什么用 我听说它用来代替多重继承 并且还可以用它来完成数据隐藏 还有其他优点吗 哪些地方使用了接口 程序员如何识别需要该接口 有什么区别explicit interface implementation and implicit
  • 回发后刷新时提示确认表单重新提交。我做错了什么?

    我有一个以空白 默认状态启动的仪表板 我让用户能够将保存的状态加载到仪表板中 当他们单击 应用 按钮时 我运行以下代码 function CloseAndSave var radUpload find radUpload1ID var in
  • 将 Word 文档另存为图像

    我正在使用下面的代码将 Word 文档转换为图像文件 但是图片显得太大 内容不适合 有没有办法渲染图片或将图片保存到合适的尺寸 private void btnConvert Click object sender EventArgs e
  • 在一个平台上,对于所有数据类型,所有数据指针的大小是否相同? [复制]

    这个问题在这里已经有答案了 Are char int long 甚至long long 大小相同 在给定平台上 不能保证它们的大小相同 尽管在我有使用经验的平台上它们通常是相同的 C 2011 在线草稿 http www open std
  • DbContext 和 ObjectContext 有什么区别

    From MSDN 表示工作单元和存储库模式的组合 使您能够查询数据库并将更改分组在一起 然后将这些更改作为一个单元写回存储 DbContext在概念上类似于ObjectContext 我虽然DbContext只处理与数据库的连接以及针对数
  • Azure 辅助角色“请求输入之一超出范围”的内部异常。

    我在辅助角色中调用 CloudTableClient CreateTableIfNotExist 方法 但收到一个异常 其中包含 请求输入之一超出范围 的内部异常 我做了一些研究 发现这是由于将表命名为非法表名引起的 但是 我尝试为我的表命
  • 如何禁用 fread() 中的缓冲?

    我正在使用 fread 和 fwrite 读取和写入套接字 我相信这些函数用于缓冲输入和输出 有什么方法可以在仍然使用这些功能的同时禁用缓冲吗 Edit 我正在构建一个远程桌面应用程序 远程客户端似乎 落后于服务器 我不知道可能是什么原因
  • CMake 无法确定目标的链接器语言

    首先 我查看了this https stackoverflow com questions 11801186 cmake unable to determine linker language with c发帖并找不到解决我的问题的方法 我
  • Cmake 链接共享库:包含库中的头文件时“没有这样的文件或目录”

    我正在学习使用 CMake 构建库 构建库的代码结构如下 include Test hpp ITest hpp interface src Test cpp ITest cpp 在 CMakeLists txt 中 我用来构建库的句子是 f
  • 我的班级应该订阅自己的公共活动吗?

    我正在使用 C 3 0 遵循标准事件模式我有 public event EventHandler
  • Oracle Data Provider for .NET 不支持 Oracle 19.0.48.0.0

    我们刚刚升级到 Oracle 19c 19 3 0 所有应用程序都停止工作并出现以下错误消息 Oracle Data Provider for NET 不支持 Oracle 19 0 48 0 0 我将 Oracle ManagedData

随机推荐

  • python和mysql中的矩阵乘法

    我有一本货币兑换字典 如下 exchange rates USD 1 00000 EUR 1 32875 GBP 1 56718 然后我使用以下方法检索产品的销售信息 SELECT price currency FROM sales 可能有
  • 在 Vaadin 视图中显示 PDF

    我想在 Vaadin 视图中显示 PDF 我创建一个 BrowserFrame 并传递 PDF 的 StreamResource StreamResource streamResource new StreamResource getPre
  • 使用Haskell的map函数计算列表的总和

    Haskell addm Int gt Int addm x xs sum x xs 我能够使用以下方法获得列表的总和sum函数 但是是否可以使用以下方法获得列表的总和map功能 还有地图功能有什么用 你不能真正使用map总结一个列表 因为
  • Java 能识别无限循环吗?

    给出以下代码示例 public class WeirdStuff public static int doSomething while true public static void main String args doSomethin
  • 具有相同 crs、范围、维度、分辨率的栅格不对齐

    我正在查找枫糖浆每年的平均生产天数 我的 Maple 分布数据位于 ascii 文件中 我有一个名为的栅格 从 NetCDF 文件创建 brick Tmax 我想要匹配的规格brick Tmax我的枫树分布数据 These are the
  • 在C中创建文件头(文件的元数据)

    文件头包含有关文件的所有数据 mdash 元数据 我想创建一个带有元数据的空白文件 然后我想将其他文件内容添加到这个空白文件中 并且需要更改 修改 元数据 C语言中有没有用于创建文件头的库 如何用C语言读取 写入文件头 metadata f
  • 在 Visual Studio 中调试 AngularJS(不是在 VS Code 中)

    有没有办法在 Visual Studio 中调试 AngularJS 代码 Note 我不是在谈论 VS Code 我希望能够设置断点并查看那里发生了什么 我知道其他 IDE 可以让我们做到这一点 那么可以使用 Visual Studio
  • 在写入文件之前格式化 JSON

    目前我正在使用杰克逊 JSON 处理器 https web archive org web 20150315020718 http jackson codehaus org 将首选项数据等写入文件主要是因为我希望高级用户能够修改 备份这些数
  • 使用随机整数创建 numpy 数组,每行具有另一个范围

    我需要制作快速的 numpy 数组 在每一行中生成具有不同范围的随机整数 我可以使用的代码 但当我将向量数量增加到 300000 时速度很慢 import numpy as np import random population size
  • ASP Net MVC - 验证消息的本地化

    我在我的 asp net mvc 5 应用程序中遇到了验证消息本地化的问题 我用它来本地化 路线配置 Internationalization public class RouteConfig public static void Regi
  • opencv中的“通道”到底指什么?

    我不明白 opencv 文档何时提到术语 通道 它是指数字图像中的通道吗 或者是别的东西 由于 OpenCV 是一个图像处理库 所以给定的图像可以假设为 2D 矩阵 每个元素作为一个像素 现在有多种类型的图像格式 例如Gray RGB or
  • BluetoothChat同步了Activity的onResume生命周期方法,为什么?

    我现在正在研究蓝牙 Android API 并且遇到了 BluetoothChat 示例 http developer android com resources samples BluetoothChat index html http
  • 包标识符在 iOS 项目中意味着什么?

    当我使用命令行工具模板时 它在向导内有一个包标识符 包标识符是什么意思 这和命名空间类似吗 根据苹果文档 https developer apple com go id bundle structure 捆绑包标识符可让 iOS 和 mac
  • 我应该将函数引用存储在 Redux 存储中吗?

    我正在尝试建立键盘快捷键支持进入我的 React Redux 应用程序惯用的 React Redux 方式 我计划执行此操作的方法是拥有以下操作创建者和关联操作 registerShortcut keyCode actionCreatorF
  • 在 prolog 中将浮点数转换为整数

    如何在prolog中将浮点数转换为整数 I tried integer truncate sqrt 9 false integer round sqrt 9 false 谓词integer 1你使用的是真的iff它的参数是一个整数 自任期以
  • 使整个单元格内容可点击 MUI 表格

    我有一个 MUI 表格 其中的单元格在单击时链接到应用程序的另一部分 我不是包裹整行 而是有选择地包裹某些单元格 链接 路由正在工作 但由于一些样式交互 我留下了这个令人讨厌的死的不可点击的空间 在下图中 我打开了开发工具上的 检查元素 视
  • 注册热键 Fn 修饰符?

    I know you can use CTRL ALT SHIFT etc modifiers for RegisterHotKey but what about the Fn key 我的笔记本电脑上曾经有一些过时的软件 当按下 Fn U
  • 为什么在 getdate() 上使用 left() 会将其更改为不同的数据类型?

    运行两个简单的选择语句 SELECT GETDATE SELECT LEFT GETDATE 10 Returns 2015 10 30 14 19 56 697 Oct 30 201 我正期待着LEFT 给我2015 10 30 但事实并
  • 从 XML 名称标签中删除无效字符 - RegEx C#

    我有一个包含从 Web 服务中提取的 xml 数据的字符串 数据很丑陋 并且 xml 的名称标签中存在一些无效字符 例如 我可能会看到类似的内容
  • 具有适用于左值和右值的引用参数的 C++ 函数

    我想要一个 C 函数 它接受一个参数 即一个引用 并且适用于左值和右值相同的语法 举个例子 include