Right you are. I guess I didn't notice because in practice everybody includes DerivedType. I changed it to work like the old vector getters.
I actually wanted to get rid of this function too, but there are literally thousands of usages of it...
What's the motivation for this change compared to the previous code? This looks problematic in ways I can't really see a fix for. While the originally proposed patch would fail to compile if you included Type.h without DerivedType.h - the new version will compile but fail to link (a & probably should fail to compile - it will if you compile with -Wundefined-inline)