コードベースで次のコードを見つけました。私の同僚は大丈夫だと思っていますが、UB のように疑わしいようです。UBですか?
class A {
//some stuff
};
class B : public A {
int a;
int b;
int c;
}
void foo( std::vector<A>& a ) {
std::vector<B> b;
for(size_t i = 0 ; i < a.size(); ++i ){
b.push_back( *(B*)(&a[i]) );
}
//remove some elements from b
for(size_t i = 0 ; i < b.size(); ++i ){
a.push_back( *(A*)(&b[i]) );
}
}