Sto cercando di creare una classe di registrazione che abbia membri come Info, Error etc che possano essere configurati in output su console, file o in nessun posto.Implementazione di un no-op std :: ostream
Per efficienza, vorrei evitare il sovraccarico della formattazione dei messaggi che verranno gettati via (ovvero i messaggi di informazioni quando non sono in esecuzione in una modalità dettagliata). Se implemento uno std :: streambuf personalizzato che viene esportato da nessuna parte, immagino che il layer std :: ostream continui a fare tutta la formattazione. Qualcuno può suggerire un modo per avere uno std :: ostream veramente "nullo" che eviti di fare alcun lavoro sui parametri passati ad esso con <<
?
Grazie.
Non mi preoccuperei. basta usare un flusso nullo come mostrato da Neil. la classe non ha bisogno di prestazioni migliori, perché ovviamente se non si ha un obiettivo nullo, la formattazione * deve * essere fatta, quindi ovviamente non è fondamentale. solo i miei 2 centesimi –
hmm, ma sembra che sia inteso come un "debug output" cosa? un modo che ho visto è così: out() << a << b ...; e out() restituisce struct f {}; senza modello f const & operator << (f const & f_, T const) {return f_; }, e quindi rendere restituire diverse strutture a seconda del livello di registro. o rendere diverse funzioni o qualsiasi altra cosa. –