reinterpret_cast de collection de pointeur
Bonjour à tous,
Je me demandais s'il était légal (dans le sens ayant un comportement prédictif) de caster brutalement un std::vector de pointeur vers un std::vector d'un autre type de pointeur.
Concrètement cela donne:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| struct test {
int var;
};
std::vector<void*> collection;
/*
.
.
fill collection
.
.
*/
std::vector<test*> res = *reinterpret_cast< const std::vector<test*> * >(&collection); |
On suppose dans ce cas que les pointeurs dans 'collection' pointent tous bien vers des instances de type 'test'. Cela fonctionne parfaitement sous Visual et semble d'ailleurs deux fois plus rapide qu'une copie via boucle for. Par contre, cela ressemble furieusement à une bombe à retardement prête à me sauter à la tête.
Je n'arrive pas à trouver une réponse claire sur le net à part que cette méthode est moche et à éviter.