2017-01-24 16 views
1

次の作業はUBですか?std :: stringのxvalueを関数std :: string_viewに渡す

void foo(std::string_view view) {...} 

void bar() 
{ 
    std::string str; 
    foo(std::move(str)); 
} 

ありがとうございます!

+0

ちょうどそれがちょうどコンパイルされないことを確かめてください。 – nwp

+1

@nwp、私はかなり前に試してみるだろう。これは、string_viewにconst文字列を受け取るctorがあるため& – Bikineev

+2

このUBを作成すると正確には思いますか? 'string_view'は読み取り専用で、' move'は実際には何も移動しません。それは単なるキャストです。 – NathanOliver

答えて

4

これはよく定義された動作ですが、特に有用ではありません。 basic_stringoperator basic_string_viewが変換の実行に使用され、左辺値/右辺値制限はありません。したがって、moveを一切使用していない場合と同じことをします。

関連する問題