PVS-Studioでコード分析を行ったところ、いくつかの警告メッセージが表示されました。
ヘッダー ファイルに次のステートメントがあります。
constexpr int MIN_ALLOWED_Y { 0 };
そしてソースファイルで:
std::make_pair<const int, const int>( std::move( MIN_ALLOWED_Y ), std::move( MAX_ALLOWED_Y ) )
上記の式では、右辺値のみを受け入れると考えていたため、xvaluestd::move
にキャストしていました。MIN_ALLOWED_Y
std::make_pair
// from https://en.cppreference.com/w/cpp/utility/pair/make_pair
template< class T1, class T2 >
constexpr std::pair<V1,V2> make_pair( T1&& t, T2&& u );
しかし、次のような警告メッセージが表示されます。
V833 Passing the const-qualified object 'MIN_ALLOWED_Y' to the 'std::move' function disables move semantics.
これは有効な警告ですか? もしそうなら、私は何をすべきですか?を削除する必要がありstd::move
ますか (この場合は冗長なのでしょうか?)。
より良い質問は、どこで使用しないでしょうstd::move
か?