我正在寻找一种可移植的方法来实现C++中用于记录类的延迟评估.假设我有一个简单的日志记录功能
void syslog(int priority, const char *format, ...);
Run Code Online (Sandbox Code Playgroud)
然后在syslog()函数中我们可以做到:
if (priority < current_priority)
return;
Run Code Online (Sandbox Code Playgroud)
所以我们从来没有实际调用格式化函数(sprintf).另一方面,如果我们使用像日志流一样
log << LOG_NOTICE << "test " << 123;
Run Code Online (Sandbox Code Playgroud)
所有的格式化总是被执行,这可能需要很长时间.是否有可能实际使用ostream的所有好东西(如类的自定义<<运算符,类型安全,优雅语法......),以便在检查日志记录级别后执行格式化?