的FastFormat庫的工作原理是這樣的:如何在接受無限量參數的函數中保證類型安全?
string example;
fastformat::fmt(example, "I am asking {0} question on {1}", 1, "stackoverflow");
它還宣稱 「100%類型安全」。我可以理解其他庫如boost::format
是如何通過重載operator%
實現的,這也是我經常用我的代碼實現的。
但是,如果我能夠使用逗號,而不會讓其他程序員感到意外。我很想知道如何在沒有模板操作符重載技巧的情況下保證類型安全。
除了注意:如果你想知道什麼是 「模板操作符重載帽子戲法」,這是何等的boost ::格式作品(大部分):
struct Test
{
template<class T>
Test& operator%(const T& what) { cout << what << "\n" /* Example */; return *this; }
};
Test() % 5 % "abc";
有趣的是,當我運行時,我得到「5abcabc」(VS2010) – 2010-09-23 00:55:38
@Anders:對我來說工作得很好 – frm 2010-09-23 00:59:58