bug 899319 - use __is_base_of() on gcc / clang / msvc r=froydnj