
John Moeller wrote:
One more thing. The argument is passed by value, which is ok for builtins. Will all those potentially excess temporaries be an issue for larger UDTs? Perhaps the argument type of result() should be wrapped so that it's a const reference if it's larger than a pointer.
It may be best to simply pass all arguments types by const reference in this instance. When instantiated then inlined the function call overhead related to making temp-copy of the argument doesn't need to be stripped away by the compiler during subsequent optimization, which can make it easier for the compiler to identify that it is a good idea to inline the function in the first place. There is no real draw back to passing a built in type by const reference, particularly if your intention is for the compiler to inline the function anyway. Luke