通过在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 ) )
在上面的表达式中,我曾经强制std::move
转换MIN_ALLOWED_Y
为 xvalue,因为我认为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
?