C ++ обеспечивает неявное преобразование из T *
в const T *
.
Если сейчас я использую T *
в классе контейнера, как в vector<T *>
, то, конечно, неявное преобразование в vector<const T *>
больше.
Использование reinterpret_cast
, кажется, работает для сотворения всего контейнера, но действительно ли это безопасно сделать?
template <typename T>
const vector<const T *> & constVector(const vector<T *> & vec) {
return reinterpret_cast<const vector<const T *> &>(vec);
}
// Usage:
vector<int *> vec1;
vector<const int *> vec2 = constVector(vec1);