I\'ve got an API that looks like this:
void WriteDefaultFileOutput(std::wostream &str, std::wstring target)
{
//Some code that modifies target before
"Pass by value" can mean either copy or move; if the argument is an lvalue, the copy constructor is invoked. If the argument is an rvalue, the move constructor is invoked. You don't have to do anything special involving rvalue references to get move semantics with pass by value.
I dig deeper into this topic in What are move semantics?