Таким образом, это обеспечивает предполагаемый вывод:
void f(std::string&& s)
{
s += " plus extra";
}
int main(void)
{
std::string str = "A string";
f( std::move(str) );
std::cout << str << std::endl;
return 0;
}
Строка плюс дополнительная
То есть, он работает, когда я запускаю его на Ideone, но это UB? Добавление дополнительных инициализаций строк до и после вызова f
ничего не изменило.