小编Sav*_*inG的帖子

使用ostream C++运算符进行惰性求值

我正在寻找一种可移植的方法来实现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的所有好东西(如类的自定义<<运算符,类型安全,优雅语法......),以便在检查日志记录级别后执行格式化?

c++ logging iostream lazy-evaluation

8
推荐指数
1
解决办法
1679
查看次数

标签 统计

c++ ×1

iostream ×1

lazy-evaluation ×1

logging ×1