vector<unique_ptr<T>>
을 vector<unique_ptr<const T>>
으로 변환하는 방법?벡터 <unique_ptr <T>>을 (를) 벡터로 변환하십시오. <unique_ptr <const T>>
reinterpret_cast
을 사용하면 어떤 단점이 있습니까? C++ 11 이상에서 그렇게하는 것이 좋습니다.
vector<unique_ptr<const T>> Get() {
vector<unique_ptr<T>> some;
...
// Any better way to do this?
return *(reinterpret_cast<vector<unique_ptr<const T>>*>(&some));
}
그냥'return {some.begin(), some.end()}'하면 되나요? –
@BenVoigt : 고유 포인터는 복사 할 수 없습니다. –
@Kerrek : 아 맞아. 이동 반복 어댑터가 필요합니다. 새로운 벡터에서 기존의 모든 unique_ptr 을'unique_ptr'으로 옮기는 것이 올바른 접근법이다. 왜냐하면'reinterpret_cast'는 UB이기 때문이다. –