如何轉換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:對啊。你需要一個移動迭代器適配器。不過,由於'reinterpret_cast'是UB,所以將新的矢量中的所有現有'unique_ptr'移動到'unique_ptr '是正確的方法。 –