1
次の作業はUBですか?std :: stringのxvalueを関数std :: string_viewに渡す
void foo(std::string_view view) {...}
void bar()
{
std::string str;
foo(std::move(str));
}
ありがとうございます!
次の作業はUBですか?std :: stringのxvalueを関数std :: string_viewに渡す
void foo(std::string_view view) {...}
void bar()
{
std::string str;
foo(std::move(str));
}
ありがとうございます!
これはよく定義された動作ですが、特に有用ではありません。 basic_string
のoperator basic_string_view
が変換の実行に使用され、左辺値/右辺値制限はありません。したがって、move
を一切使用していない場合と同じことをします。
ちょうどそれがちょうどコンパイルされないことを確かめてください。 – nwp
@nwp、私はかなり前に試してみるだろう。これは、string_viewにconst文字列を受け取るctorがあるため& – Bikineev
このUBを作成すると正確には思いますか? 'string_view'は読み取り専用で、' move'は実際には何も移動しません。それは単なるキャストです。 – NathanOliver