(CRTP). Provided, that this is true, I assume, that the proposed workaround for compilers with expensive multiple inheritance implementations should not work on compliant compilers, because of a violation of 14.6.5/p. 2:
"As with nontemplate classes, the names of namespace scope friend functions of a class template specialization are not visible during an ordinary lookup unless explicitly declared at namespace scope (11.4). Such names may be found under the rules for associated classes (3.4.2)."
In a first statement, Daveed Vandevoorde also seems to assume, that the interpretation is correct, that "[..]X<T> is not in general associated with T [..]" (My truncated quote from Daveeds answer).
Concretly said, the example:
class myclass{ // };
template struct less_than_comparable<myclass>;
should not work, because less_than_comparable<myclass> is not associated
I guess you missed the fact that X<T> in the operators library defines operators which take T as an argument, not X<T>. Whether X<T> is associated with T is therefore not important here, ADL matches the operator arguments, not the class which declared the operator.
Regards, Daniel
-- Daniel Frey
aixigo AG - financial training, research and technology Schloß-Rahe-Straße 15, 52072 Aachen, Germany fon: +49 (0)241 936737-42, fax: +49 (0)241 936737-99 eMail: [EMAIL PROTECTED], web: http://www.aixigo.de
_______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost