"David Abrahams" <[EMAIL PROTECTED]> wrote in message [EMAIL PROTECTED]">news:[EMAIL PROTECTED]... > "John Maddock" <[EMAIL PROTECTED]> writes: > > Yes, a class is it's own superclass/subclass, but IMO not it's own > > base: so it is a bug in the implementation. > > I'd like to suggest changing the documentation to match the > implementation at this point. I know of a few places where I have > relied on the current semantics, and I'm sure that's the case for > others as well. I'm not set on this course, but I think it's worth > considering.
Before changing the documentation please consider the following improved implemetation that overcomes ambiguity and access control issues of the current is_base_and_derived implemetation (I lately posted it to c.l.c++.m) : template <typename B, typename D> struct is_base_and_derived { private: typedef char (&yes)[1]; typedef char (&no) [2]; template<typename T> static yes check(D const volatile &, T); static no check(B const volatile &, int); struct C { operator B const volatile &() const; operator D const volatile &(); }; static C getC(); public: static const bool result = sizeof(check(getC(), 0)) == sizeof(yes); }; Additional specializations needed (e.g. void and reference types) Cheers, Rani _______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost