How can you tell whether or not a given parameter is an rvalue in C++03? I'm writing some very generic code and am in need of taking a reference if possible, or constructing a new object otherwise. Can I overload to take by-value as well as by-reference and have the rvalue returns call the by-value function?
Or do I have a very sickening feeling that this is why rvalue references are in C++0x?
Edit:
is_rvalue = !(is_reference || is_pointer) ?