Это UB, чтобы сделать следующее?
void foo(std::string_view view) {...}
void bar()
{
std::string str;
foo(std::move(str));
}
Спасибо!
Это четко определенное поведение, хотя оно не особенно полезно. basic_string
«s operator basic_string_view
будет использоваться для выполнения преобразования, и у него нет ограничений lvalue / rvalue. Так что он будет делать то же самое, что и если бы вы не использовали move
совсем.
Других решений пока нет …