¿Reinterpret_cast conduce a un comportamiento indefinido?
Tengo una plantilla de claseA
que contiene un contenedor de punteros (T*
):
template <typename T>
class A {
public:
// ...
private:
std::vector<T*> data;
};
y un montón de funciones como:
void f(const A<const T>&);
void g(const A<const T>&);
¿Está bien llamar a estas funciones a través de un elenco desdeA<const T>
aA<T>
?
A<double> a;
...
auto& ac = reinterpret_cast<const A<const double>&>(a);
f(ac);
Estoy bastante seguro de que este código tiene un comportamiento indefinido.
¿Es peligroso usar tales conversiones en la vida real?