am I missing something here?Code:inline bool is( type_info const & derived, type_info const & base ) { return base == derived || base.before( derived ); } struct base { virtual ~base( void ){ } }; struct first : base { }; struct second : base { }; int main( void ) { assert( ( is( typeid( first ), typeid( base ) ) ) ); assert( ( is( typeid( second ), typeid( base ) ) ) ); assert( !( is( typeid( first ), typeid( second ) ) ) ); assert( !( is( typeid( second ), typeid( first ) ) ) ); // assersion fails! }