In a C++ class the member function is private by default.
You can state that explicitly by using an access specifier, like this:
private:
The effect lasts until the next access specifier in the class, or the end of the class definition.
One difference from Java is that C++ private member functions are not final. When they're virtual they can be overridden in derived classes. In C++ member functions meant to be overridden are often private.
C++ namespaces do not have accessibility.
In effect they're all public.
The Boost library uses a convention where a nested namespace named detail is to be regarded as an implementation detail, as if it were private.
A more direct naming could be impl or implementation.
Such conventions are enough to prevent inadvertent access of and dependence on implementation details.
clazzjust have a class, with private static member functions.