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...