Я ищу переносимый способ реализовать ленивую оценку в C ++ для класса регистрации. Допустим, у меня есть простая функция журналирования, такая как
void syslog(int priority, const char *format, ...);
, тогда в функции syslog () мы можем сделать:
if (priority < current_priority)
return;
, поэтому мы никогда не вызываем функцию форматирования (sprintf). С другой стороны, если мы используем поток регистрации, такой как
log << LOG_NOTICE << "test " << 123;
, все форматирование всегда выполняется, что может занять много времени. Есть ли возможность использовать все преимущества ostream (например, пользовательский оператор << для классов, безопасность типов, элегантный синтаксис ...) таким образом, чтобы форматирование выполнялось ПОСЛЕ проверки уровня ведения журнала?