http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51336
--- Comment #4 from Paolo Carlini <paolo.carlini at oracle dot com> 2011-11-29 10:11:34 UTC --- The issue with type_traits intrinsics vs instantiation came up recently, when I fixed an actual bug affecting __is_base_of. Note, if isn't clear already, that in the case of is_abstract, C++11 requires unconditionally completeness for T: we are treating all the traits having such type of precondition in an uniform way. All in all, I agree with Daniel about portability.