//可變參數模板
//可變參數模板,可以創建可接受可變數量參數的模板函數和模板類
//本程序通過模板函數來實例一下可變參數模板的基本用法
#include<iostream>
using namespace std;
void one(){}//當最後一個參數傳完後,需要一個無參的重載版本
template <typename T>//當只剩最後一個參數時,編譯器優先選擇此模板,這樣最後一個輸出後面就沒有逗號了
void one(T v)
{
cout << v << endl;
}
//...爲元運算符
//F 是一個模板參數包,f 是一個函數參數包,T 與一種類型匹配,F 與 T 的區別是 F 與任意數量的類型匹配
//關鍵點是:模板參數包 F 要與 函數參數包 f, 無論是類型還是數量上,都要相匹配。
template <typename T, typename... F>
void one(T v, F... f) //每次從傳的所有參數裏面拿出一個來給 v,這樣,就能遞歸完所有的傳參
{
cout << v << ",";
one(f...); //將元運算符...放在 f 的右邊,可以展開參數包,展開傳給f的一系列參數
}
int main()
{
one("asd",1,2,3,4); //這一系列的參數傳給模板函數包F,F再將參數包傳給函數參數包f
return 0;
}
可變參數模板用法
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
C++智能指針模板類複習
//C++智能指針模板類複習 #include<iostream> #include<memory> using namespace std; //
linukey
2020-06-23 06:00:02
模板元編程加速遞歸
//模板元編程加速遞歸 //缺點:模板元在編譯時處理,無法調試,並且會加大代碼體積 #include<iostream> using namespa
linukey
2020-06-23 06:00:02
C++類轉換構造函數和轉換函數複習
//C++類轉換構造函數和轉換函數複習 #include<iostream> #include<string> using namespace st
linukey
2020-06-23 06:00:02
C++ lambda表達式複習
linukey
2020-02-23 19:47:32
C++中類const、static、static const成員變量
linukey
2020-02-23 19:47:32
C++實現C語言printf函數
linukey
2020-02-23 19:47:32
C++ 在堆上開闢與釋放二維、三維指針
linukey
2020-02-23 19:47:32
利用包裝器以及lambda表達式實現二叉查找樹
linukey
2020-02-23 19:47:32
extern
yuwei19840916
2020-02-23 15:07:22
linux下查看so文件的函數列表
赵小刚
2020-02-22 22:52:11
24小時熱門文章
-
再談23種設計模式(3):行爲型模式(學習筆記)
-
Power Automate Desktop 安裝完,登錄後老是提示one driver 錯誤
-
微前端學習筆記(4):從微前端到微模塊之EMP與hel-micro方案探索
-
微前端學習筆記(1):微前端總體架構概述,從微服務發微
-
985 碩士程序員,空窗 4 個月沒有 Offer!
-
一文搞懂 Spring 循環依賴
-
賽博鬥地主——使用大語言模型扮演Agent智能體玩牌類遊戲。
-
VScode右鍵打開(添加到右鍵)
-
記一次 .NET某工控視覺自動化系統 卡死分析
-
WindowsServer--SQL Server搭建主從同步實現讀寫分離 - 事務性分發