Describe the problem you are trying to solve.
Currently queries do not return correct component references (pointers) for components matched with component inheritance. For example:
struct A {
  int x;
}:
struct B : public A {
  int y;
}
world.component<B>().is_a<A>();
world.query<A>()
  .each([](A& a) {
    // if `B` is matched, `a` might not be correct
  }); 
The reason this happens is because the query uses the size of a to iterate, where it should use the size of the matched component.
Describe the solution you'd like
Queries should return valid component references when component inheritance is used.