Estoy buscando hacer una clase de registro que tenga miembros como Info, Error, etc., que puedan configurarse de manera configurable para consola, archivo o en ninguna parte.Implementando un no-op std :: ostream
Para mayor eficiencia, me gustaría evitar la sobrecarga de formatear mensajes que se van a descartar (es decir, mensajes de información cuando no se está ejecutando en un modo detallado). Si implemento un std :: streambuf personalizado que se envía a ninguna parte, me imagino que la capa std :: ostream seguirá haciendo todo el formateo. ¿Alguien puede sugerir una manera de tener un std :: ostream verdaderamente "nulo" que evite hacer ningún tipo de trabajo en los parámetros que se le pasen con <<
?
Gracias.
no me preocupe. solo use una secuencia nula como se muestra en neil. la clase no necesita un mejor rendimiento, porque obviamente si no tiene un objetivo nulo, el formateo * tiene * que hacerse, por lo que obviamente no es crítico. solo mis 2 centavos –
hmm, pero parece que está pensado como una cosa de "salida de depuración"? De una manera que he visto es así: out() << a << b ...; y out() devuelve struct f {}; sin la plantilla f const & operator << (f const & f_, T const) {return f_; }, y luego distinguir las diferentes estructuras de retorno según el nivel de registro. o hacer diferentes funciones de salida o lo que sea. –