在log時引數是型別和個數是不固定的,所以在做log函式時,很多煩惱,不過c++11給我們帶來的希望
#include #include using namespace std;
class logger
static void makeloggeroff()
static bool loggerstate()
templatestatic void log(const aargs&... args)
}protected:
templatestatic void loghelper(ostream& os, const t& t1)
templatestatic 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可變引數函式模板
2013 04 27 13 34 4162人閱讀收藏 舉報 c 模板 25 c c 84 在log時引數是型別和個數是不固定的,所以在做log函式時,很多煩惱,不過c 11給我們帶來的希望 這個是今天剛讀到的,加上自己的理解為位元組寫了乙個logger類,也給大家瞧瞧啊,歡迎大蝦拍板轉 cpp vi...
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...