two small points:
1 I don't understand why the comments on C casts. Of course can not distinguish a derived class from a base class, there are no classes in C. Why would C want such restrictions?
2 Integral is a part of calculus. Integer is the name of the type.