是否有C++ 11或C++ 14,讓我們停止不必使用任何新設施:我可以區分一個和多個參數嗎?
TRACE0("one-string-no-args");
和
TRACE("formatting string with one-or-more args", arg1, arg2, etc);
這些功能不得不通過名字來區分,因爲在我所知的情況下,重載不能將零附加參數的情況與一個或多個參數的情況區分開來。
這對於printf
風格界面當然很重要,在那裏能夠知道沒有任何參數意味着您可以通過不嘗試將格式化字符串解釋爲格式化字符串來避免一類錯誤,而只是作爲最終輸出字符串。
'無效跟蹤(串),''VS模板無效跟蹤(字符串,TS ...)'是編譯器完全區分。 –
Xeo
是的,** variadic模板**就是這樣做的。如果你不知道名字,那就是。 「安全」打印功能是可變參數模板的典型介紹性示例。 – DanielKO
順便說一句我從來沒有用過它,但boost有一個非常酷的[命名函數參數模塊](http://www.boost.org/doc/libs/1_37_0/libs/parameter/doc/html/index.html)if你真的想把它帶到一個新的水平 – aaronman