FastFormat库的工作方式如下:
string example;
fastformat::fmt(example, "I am asking {0} question on {1}", 1, "stackoverflow");
它还声称“100% 类型安全”。我可以理解其他库是如何boost::format
通过重载来实现的operator%
,这也是我经常用我的代码做的事情。
但是,如果我能够使用逗号代替,其他程序员就不会那么惊讶了。我真的很想知道如何在没有模板化运算符重载技巧的情况下保证类型安全。
旁注:如果您想知道“模板化运算符重载技巧”是什么,这就是 boost::format 的工作原理(主要):
struct Test
{
template<class T>
Test& operator%(const T& what) { cout << what << "\n" /* Example */; return *this; }
};
Test() % 5 % "abc";