Udostępnij za pośrednictwem


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::moveelement .

Zobacz też

ES.56 — zapis std::move() tylko wtedy, gdy trzeba jawnie przenieść obiekt do innego zakresu