Pytanie Gdzie powinienem umieścić funkcje niezwiązane z klasą wywołało debatę na temat tego, czy w C ++ sens ma łączenie funkcji narzędziowych w klasie, czy po prostu ich istnienie jako wolnych funkcji w przestrzeni nazw.
Pochodzę z tła w języku C #, gdzie ta ostatnia opcja nie istnieje, a zatem naturalnie dąży do używania klas statycznych w małym kodzie C ++, który piszę. Najwyżej głosowana odpowiedź na to pytanie, a także kilka komentarzy mówi jednak, że preferowane są wolne funkcje, sugerując nawet, że klasy statyczne były anty-wzorcem. Dlaczego tak jest w C ++? Przynajmniej na pozór metody statyczne w klasie wydają się nie do odróżnienia od wolnych funkcji w przestrzeni nazw. Skąd więc taka preferencja?
Czy sytuacja wyglądałaby inaczej, gdyby zbiór funkcji narzędziowych potrzebował wspólnych danych, np. Pamięci podręcznej, którą można przechowywać w prywatnym polu statycznym?