cpp/types/is base of

If is derived from  or if both are the same non-union class (in both cases ignoring cv-qualification), provides the member constant  equal to. Otherwise is.

If both and  are non-union class types, and they are not the same type (ignoring cv-qualification),  shall be a complete type; otherwise the behavior is undefined.