Ostrzeżenie C26478
Nie używaj
std::move
zmiennych stałych. (es.56)
Uwagi
To ostrzeżenie oznacza, że użycie std::move
nie jest zgodne z tym, jak std::move
ma być używane.
Ponieważ const
nie można przenosić obiektów, wywołanie std::move
na nich nie ma żadnego wpływu. Ten wzorzec może spowodować niezamierzone kopie.
Nazwa analizy kodu: NO_MOVE_OP_ON_CONST
Przykład
struct node
{
node* next;
int id;
};
void foo(const node& n)
{
const node local = std::move(n); // C26478 reported here
// ...
}
Aby rozwiązać ten problem, usuń nadmiarowy std::move
element .
Zobacz też
ES.56 — zapis std::move()
tylko wtedy, gdy trzeba jawnie przenieść obiekt do innego zakresu