Безопасно ли переинтерпретировать приведение от вектора указателей к вектору указателей const?

Является ли этот тип конверсии безопасным

vector<int*> a;
const vector<const int*>& b = reinterpret_cast<const vector<const int*>&>(a);

Статическое приведение, очевидно, не работает в этом случае, потому что аргумент шаблона изменяется. Но, выполняя это переосмысление, я просто добавляю константность к тому же типу. Так должно ли это быть безопасно для всех практических целей?

9

Решение

Как и любое использование reinterpret_cast чтобы преобразовать ссылку в несвязанный тип, она дает неопределенное поведение и поэтому небезопасна, если вы не определите «безопасно», что означает «работает на моем компиляторе».

7

Другие решения

Других решений пока нет …