C++11 变长参数模板 & 如何展开变长参数
- 通过
typename ... Args指定变长参数。 - 通常通过递归展开各个参数, 使用
sizeof ... (args)获取变长参数个数。 - C++17 可以使用对if后的表达式使用
constexpr进行条件编译。
#include <iostream>
using namespace std;
template<typename T0, typename ... Args>
void varArgsFunc(T0 t0, Args ...args){
cout<<t0<<endl;
if constexpr(sizeof...(args) > 0){
varArgsFunc(args...);
}
}
int main() {
varArgsFunc(1, "afdaj", 2.2, 4);
return 0;
}
// 1
// afdaj
// 2.2
// 4
- 应用举例:emplace_back(Args && ...);
C++11 变长参数模板 & 如何展开变长参数的更多相关文章
- C++11变长参数模板
[C++11变长参数模板] C++03只有固定模板参数.C++11 加入新的表示法,允许任意个数.任意类别的模板参数,不必在定义时将参数的个数固定. 实参的个数也可以是 0,所以 tuple<& ...
- 介绍C++11标准的变长参数模板
目前大部分主流编译器的最新版本均支持了C++11标准(官方名为ISO/IEC14882:2011)大部分的语法特性,其中比较难理解的新语法特性可能要属变长参数模板(variadic template) ...
- C++11 可变参数模板
在C++11之前, 有两个典型的受制于模板功能不强而导致代码重复难看的问题, 那就 function object 和 tuple. 拿 function objects 来说, 需要一个返回类型参数 ...
- C++11新特性之五——可变参数模板
有些时候,我们定义一个函数,可能这个函数需要支持可变长参数,也就是说调用者可以传入任意个数的参数.比如C函数printf(). 我们可以这么调用. printf(); 那么这个函数是怎么实现的呢?其实 ...
- c++11——可变参数模板
在c++11之前,类模板和函数模板只能含有固定数量的模板参数,c++11增加了可变模板参数特性:允许模板定义中包含0到任意个模板参数.声明可变参数模板时,需要在typename或class后面加上省略 ...
- [C++11]C++可变参数模板
可变参数模板 原文链接: http://blog.csdn.net/xiaohu2022/article/details/69076281 普通模板只可以采取固定数量的模板参数.然而,有时候我们希望模 ...
- mvc中多参数URL会很长,首次加载不传参数让url很短,路由规则实现方法[bubuko.com]
如要实现列表中地址全路径“bubuko-11-2.html”,在首次进入时,使用短路径“bubuko.html”,只有再次href后才显示全路径“bubuko-11-2.html”,下面使用路由规则来 ...
- Kotlin入门(25)共享参数模板
共享参数SharedPreferences是Android最简单的数据存储方式,常用于存取“Key-Value”键值对数据.在使用共享参数之前,要先调用getSharedPreferences方法声明 ...
- 函数第二部分:为什么说动态参数是没有计划好的参数-Python基础前传(11)
动态参数1-一个星号变元组 动态参数存在的意义? 函数的作者有时候也不知道这个函数到底需要多少个参数,这时候动态参数就有存在的意义了 动态参数创建-加* 底层原理是:把数值型或其他数据类型变成了元组类 ...
- c++特性:指向类成员的指针和非类型类模板参数和函数指针返回值 参数推导机制和关联型别
一.c++允许定义指向类成员的指针,包括类函数成员指针和类数据成员指针 格式如下: class A { public: void func(){printf("This is a funct ...
随机推荐
- pytorch学习笔记一之张量
1. 张量¶ 1.1. 概述¶ 张量(tensor)是pytorch中的一种较为基础的数据结构,类比于numpy中的ndarrays,在pytorch中,张量可以在GPU中进行运算 通 ...
- LeetCode-440 字典序的第K小数字
来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/k-th-smallest-in-lexicographical-order 题目描述 给定整数 ...
- python如何画高光谱立体图像
语句含义:spectral.view_cube(image,bands=[29,19,9]) 中的29,19和9是第几个波段,可以改成数据波段数以内的其他的数值
- Ubuntu 安装 PHP
Ubuntu版本:20.04.1 LTS PHP版本:8.2.3 下载地址: https://www.php.net/downloads 官方文档:https://www.php.net/manual ...
- 【MySQL 服务器参数优化】
http://www.hainiubl.com/topics/75823 https://www.cnblogs.com/msjhw/p/15816582.html https://blog.csdn ...
- Deer_GF之框架介绍
介绍一下Deer_GameFramework_Wolong,这个框架是我自己这几年经验及自己摸索出来缝合出来一套包含优秀库及开发工具可以直接上手快速开发游戏的框架. 缝合东西包括游戏框架G ...
- SAP 交货单抬头客制化界面以及字段
需求 因为涉及系统之间的家伙但传输,方便业务查看该交货单是否已经发送,因此再交货单的抬头页面进行增强,给出一个是否发送的字段显示.如下: 业务加载项 LE_SHP_TAB_CUST_HEAD se19 ...
- react修改打包后css,js,src引入的静态地址路径修改
在package.json 里边增加该配置 (当然,配置的地址可以由部署环境决定,可以是 './' , 也可以是 '../',根据需要配置即可) 查找到到"private": tr ...
- Mac新手必看Mac入门基本知识图文教程
你已经是Mac的用户了吗?还是准备入手的新手呢? 赶快看看"Mac入门基本知识"吧! macbook系统基础内容简介 Mac入门基本知识 1.主界面结构图基本知识介绍(如图所示) ...
- springboot集成xxl-job问题
Client-error:unknown code for readObject at 0x3c (<) 原因之一是classNotFoundRxception :com.caucho.hess ...