Program Tip

unique_ptr은 이동 후 nullptr을 저장하도록 보장됩니까?

programtip 2020. 10. 30. 20:28
반응형

unique_ptr은 이동 후 nullptr을 저장하도록 보장됩니까?


이사 후 unique_ptr보관 보장 nullptr되나요?

std::unique_ptr<int> p1{new int{23}};
std::unique_ptr<int> p2{std::move(p1)};
assert(!p1); // is this always true?

예, nullptr이후 move와 비교할 수 있으며 동등하게 비교할 수 있습니다.

§20.8.1 / 4 부터 [unique.ptr]

또한 u요청시 소유권을 다른 고유 포인터로 전송할 수 있습니다 u2. 이러한 전송이 완료되면 다음 사후 조건이 유지됩니다.
u2.p사전 전송 과 같음u.p ,
u.p같음nullptr , 및
...

(멤버 p는 앞에서 설명한 것처럼 — 고유 포인터는 u두 번째 개체에 대한 포인터를 저장하는 개체입니다.p )


예. C ++ 2011 표준 섹션 20.7.1 / 4에서 :

또한 u는 요청에 따라 소유권을 다른 고유 포인터 u2로 전송할 수 있습니다. 이러한 전송이 완료되면 다음 사후 조건이 유지됩니다. [...] [원본 unique_ptr]은 nullptr ...

참고 URL : https://stackoverflow.com/questions/24061767/is-unique-ptr-guaranteed-to-store-nullptr-after-move

반응형