C 11 可變引數模板實現print輸出引數

2021-07-11 09:36:28 字數 387 閱讀 9330

c++11支援可變引數模板的特性,真的是很好用。

下面**實現的print函式,就利用可變引數模板以及函式模板遞迴呼叫,實現將任意多個不同型別的引數順序輸出列印到std::ostream流中。

#include 

/* 終止遞迴函式 */

inline

void args_print(std::ostream& steam){}

/* 使用可變引數模板實現引數列印到輸出流(ostream) (遞迴呼叫) */

template

inline

void args_print(ostream& std::steam,t first,args...rest)

用C 可變引數模板實現類似C語言的printf

在以前,c 要實現可變引數的函式,得用c語言的va list那一套東西,直到c 11的可變引數模板誕生,正好最近在寫乙個日誌模組,是時候了解一下可變引數模板了。下面這個簡單的log函式,只使用 進行佔位,並沒有區分型別,有點像c 的 include include include templatev...

C 11可變引數函式模板

在log時引數是型別和個數是不固定的,所以在做log函式時,很多煩惱,不過c 11給我們帶來的希望 include include using namespace std class logger static void makeloggeroff static bool loggerstate t...

c 11 之可變引數模板

目的 包含0到任意個模板引數 宣告可變引數模板需要在typename或class 後面加上省略號 一 可變引數模板函式 template void f t.args cout 可變引數展開有兩種方式 1.通過遞迴的模板函式來將引數展開 2.通過逗號表示式和初始化列表方式展開引數包 對於1介紹一種通過...