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介紹一種通過...