On Tue, 28 Jan 2003 03:06:35 -0800, "Andrei Alexandrescu" <[EMAIL PROTECTED]> wrote:
>"Thomas Witt" <[EMAIL PROTECTED]> wrote in message >[EMAIL PROTECTED]">news:[EMAIL PROTECTED]... >> IIUC is_based_and_derived<T,T> evaluates to true as well. Is a class T >> strictly speaking a base class of itself? > >Yes That's a convention of is_base_and_derived though. To the standard a class is not a base of itself, so this convention should be documented. In other words, you have to specify whether the ordering is strict or not. Incidentally, I've noticed that boost's implementation of is_base_and_derived has the same access-checking problems as is_convertible. That could be easily fixed, as said in the thread about is convertible, by using function templates: typedef char (&no_type)[1]; typedef char (&yes_type)[2]; template <typename T> struct identity { typedef T type; }; template <typename To> no_type is_convertible(...); template <typename To> yes_type is_convertible(typename identity<To>::type); Genny. _______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost