Item 23 of Effective C++ (3rd edition) by Scott Meyers is titled: "Prefer non-member non-friend functions to member functions". I understood that the intention of Scott was that, whenever a function can be implemented in terms of the existing minimal set of member functions, it should be made free-standing.
However, I saw an opinion today that having a free-standing function that calls a state-changing member function is a bad practice. This opinion basically states that all free-standing functions should be pure. Is this a universal understanding or my initial understanding is justifiable as well?