Питання, куди я повинен розміщувати функції, не пов'язані з класом , викликав певну дискусію щодо того, чи є сенс у C ++ поєднувати утилітні функції в класі чи просто вони існують як вільні функції в просторі імен.
Я походжу з фону C #, де останнього варіанту не існує, і, природно, тенденція до використання статичних класів у маленькому коді C ++, який я пишу. Найвища відповідь на це питання, а також декілька коментарів, однак, говорять про те, що слід віддати перевагу вільним функціям, навіть припускаючи, що статичні класи були антидіаграмою. Чому так у C ++? Принаймні на поверхні статичні методи класу здаються невідмінними від вільних функцій у просторі імен. Чому, таким чином, перевага останньому?
Чи було б інакше, якби для збору функцій утиліти потрібні були спільні дані, наприклад кеш, який можна зберігати у приватному статичному полі?