La domanda dove dovrei inserire funzioni che non sono correlate a una classe ha suscitato qualche discussione sul fatto che abbia senso in C ++ combinare funzioni di utilità in una classe o semplicemente farle esistere come funzioni libere in un namespace.
Vengo da uno sfondo C # in cui l'ultima opzione non esiste e quindi tende naturalmente ad usare le classi statiche nel piccolo codice C ++ che scrivo. La risposta più votata su tale questione, oltre a diversi commenti, afferma tuttavia che sono da preferire le funzioni libere, anche suggerendo che le classi statiche erano un anti-modello. Perché è così in C ++? Almeno in superficie, i metodi statici su una classe sembrano indistinguibili dalle funzioni libere in uno spazio dei nomi. Perché dunque la preferenza per quest'ultimo?
Le cose sarebbero diverse se la raccolta di funzioni di utilità avesse bisogno di alcuni dati condivisi, ad es. una cache si può memorizzare in un campo statico privato?