I\'d like to write function interfaces that force the user to acknowledge the semantic meaning of built-in constants. For example, I\'d like to take
void rotate(
Slower is in the eye of the beholder. How often do you call this code? Yes, you'll be creating bigger items on the stack when passing a Radians class than a primitive float.
Why is this important? At some point the user of your class has to have half a brain and understand the API. You could declare it as
void rotate(float radians);
Alternately, assuming you don't actually modify the angle, you could pass your Radians class by const reference:
void rotate(const Radians &angle);
which would presumably be faster than passing by value.