【Effective Modern C++】条款24:区分万能引用和右值引用

news/2024/11/8 18:03:42/

条款24:区分万能引用和右值引用

万能引用既可以是左值引用,也可以是右值引用。

一、模板中的万能引用

要求:T && + 类型推导。

template<typename T>
void f(T &&param);   // param是一个万能引用template<typename T>
void f(std::vector<T> &&param);  // 右值引用,因为不是形如 T &&// std::vector内的push_back成员函数
void push_back(T &&x); // 右值引用,因为不涉及类型推导,vector实例的类型已经确定了push_back的参数类型

用左值初始化万能引用就会得到一个左值引用,用右值初始化万能引用就会得到一个右值引用。

二、可变参数模板的万能引用

要求:Args&&... + 类型推导

// std::vector的emplace_back
template<class... Args>
void emplace_back(Args&&... args); 
// 万能引用,因为类型形参Args独立于vector的类型形参T,每次emplace_back的时候都要进行推导

三、auto的万能引用

要求:auto&&/auto&&... + 类型推导

auto &&var2 = var1;

http://www.ppmy.cn/news/1189709.html

相关文章

【送书福利-第二十三期】《从零基础到精通Flutter开发》

&#x1f60e; 作者介绍&#xff1a;我是程序员洲洲&#xff0c;一个热爱写作的非著名程序员。CSDN全栈优质领域创作者、华为云博客社区云享专家、阿里云博客社区专家博主、前后端开发、人工智能研究生。公粽号&#xff1a;程序员洲洲。 &#x1f388; 本文专栏&#xff1a;本文…

CSS3网页布局基础

CSS布局始于第2个版本&#xff0c;CSS 2.1把布局分为3种模型&#xff1a;常规流、浮动、绝对定位。CSS 3推出更多布局方案&#xff1a;多列布局、弹性盒、模板层、网格定位、网格层、浮动盒等。本章重点介绍CSS 2.1标准的3种布局模型&#xff0c;它们获得所有浏览器的全面、一致…

onnx 模型加密与解密部署运行

1.这里主要介绍onnx在c环境下的加密和解密部署。一般的onnx文件加载方式在onnxruntime下是: env Ort::Env(OrtLoggingLevel::ORT_LOGGING_LEVEL_WARNING, "YOLOV8");sessionOptions Ort::SessionOptions();std::wstring w_modelPath charToWstring(mnnModelPath.c…

Shopify 开源 Ruvy,将 Ruby 代码转换成 WebAssembly

导读Shopify 最近开源了一个名为 Ruvy 的项目。Ruvy 是一个工具链&#xff0c;它接受 Ruby 代码作为输入&#xff0c;并创建一个将执行该 Ruby 代码的 WebAssembly 模块。 目前已有从 Ruby 代码创建 Wasm 模块的项目&#xff0c;最常见的是 ruby.wasm&#xff0c;Ruvy 也是基于…

06、Caused by: java.nio.charset.MalformedInputException: Input length = 1

目录 问题&#xff1a;原因&#xff1a;解决方法&#xff1a; 问题&#xff1a; Caused by: java.nio.charset.MalformedInputException: Input length 1 原因&#xff1a; 应该是中文有哪些文字导致的。 yml 编码格式出错 解决方法&#xff1a; 直接这里把GBK改成 utf-8…

二叉树问题——前/中/后/层遍历问题(递归与栈)

摘要 博文主要介绍二叉树的前/中/后/层遍历(递归与栈)方法 一、前/中/后/层遍历问题 144. 二叉树的前序遍历 145. 二叉树的后序遍历 94. 二叉树的中序遍历 102. 二叉树的层序遍历 103. 二叉树的锯齿形层序遍历 二、二叉树遍历递归解析 // 前序遍历递归LC144_二叉树的前…

package.json(2)

发布配置 和npm 项目包发布相关的配置。 private private 字段可以防止我们意外地将私有库发布到 npm 服务器。只需要将该字段设置为 true&#xff1a; "private": true preferGlobal preferGlobal 字段表示当用户不把该模块安装为全局模块时&#xff0c;如果设…

MongoDB根据时间范围查询

MongoDB 查询语句示例 1. 根据时间范围查询 db.getCollection(orders).find({"enabled":true,"$or": [{"endTime": {"$gt":ISODate("2023-10-18T14:45:17.69870008:00")}}, {"endTime": null}], "startTim…