경고 C26479
std::move를 사용하여 지역 변수를 반환하지 마세요. (f.48)
설명
이 return
문은 로컬 변수의 마지막 사용이므로 컴파일러는 가능한 한 이동 의미 체계를 사용하여 반환합니다.
std::move
이 시나리오에서는 추가가 중복됩니다. 또한 중복 std::move
s는 복사 엘리전을 방지할 수 있습니다.
코드 분석 이름: NO_MOVE_RET_ON_LOCALS
예 1
S foo()
{
S local1{};
return std::move(local1); // Warning: C26479
}
이 문제를 해결하려면 중복을 제거합니다.std::move
S foo()
{
S local1{};
return local1; // No warning
}
참고 항목
F.48 - ES.56을 반환std::move(local)
하지 않음 - 개체를 다른 범위로 명시적으로 이동해야 하는 경우에만 쓰기 std::move()