Consider the case when \"whole\" objects with move semantics enabled are returned from functions, as with std::basic_string<>:
std::wstrin
What scheme is there to make a deterministic choice of these options, if any?
There isn't one, and there never will be.
Compilers are not required to do optimizations of any kind. The only thing you can do for certain is compile some code and see what comes out the other end.
The most you will eventually get is a general heuristic, a community consensus where people say, "for most compilers, X seems to work fastest." But that's about it. And that will take years as compilers get up to speed with C++0x and implementations mature.