There are two questions here :
Are static functions acceptable
practice for certain things in c++?
Yes, some things can only be archived using functions. For example, registering to glut callbacks.
Also things such as math functions
feel this way too. But how do you draw
the line when doing this sort of thing
becomes bad practice?
Also, operators on classes can be functions (for example operator +, taking two operands, or stream operator.
How to draw a line? I guess do enough of bad things to identify what is bad and what is good. Gain experience enough experience and you'll know.
My advise is to try to fully unit test your code. Having long and complex unit tests, or not able to easy unit test something is usually a sign of a problem.