C 11可變引數函式模板

2021-07-30 11:08:24 字數 1379 閱讀 6730

2013-04-27 13:34

4162人閱讀收藏 

舉報

c++模板(25)

c/c++(84)

在log時引數是型別和個數是不固定的,所以在做log函式時,很多煩惱,不過c++11給我們帶來的希望

這個是今天剛讀到的,加上自己的理解為位元組寫了乙個logger類,也給大家瞧瞧啊,歡迎大蝦拍板轉

[cpp]view plain

copy

print?

#include 

#include 

using

namespace

std;  

class

logger   

static

void

makeloggeroff()   

static

bool

loggerstate()   

template

<

typename

... aargs>  

static

void

log(

const

aargs&... args)   

}  protected

:  template

<

typename

t>  

static

void

loghelper(ostream& os, 

const

t& t1)   

template

<

typename

t, typename

... tn>  

static

void

loghelper(ostream& os, 

const

t& t1, 

const

tn&... args)   

};  

ostream * logger::_out_os = & std::cout;  

bool

logger::_logger_is_on = 

false

;  //__func__ 當前的函式名

//__va_args__,可變參巨集

#define log(...) logger::log(__file__,' ',__line__,' ',__func__,"():",__va_args__)

無圖無真相,還是來張圖吧

另外就是,我用的是g++ 4.7 編譯的時候加上-std=c++11

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

c 11 可變引數模板類

可變引數模板類,如元組 template class tuple 遞迴和特化的方式展開引數包 可變引數模板類前向宣告 template struct sum 定義展開引數的可變引數模板類 template struct sum 可變引數模板類的特化,遞迴的終止類 template struct su...