Boost logo

Boost :

From: Daniel Frey (daniel.frey_at_[hidden])
Date: 2003-07-22 07:38:04


Daniel Spangenberg wrote:
> (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: daniel.frey_at_[hidden], web: http://www.aixigo.de

Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk