Boost logo

Boost Users :

From: Arkadiy Vertleyb (vertleyb_at_[hidden])
Date: 2005-03-02 16:32:49


"Eric Niebler" <eric_at_[hidden]> wrote

> Sounds like the problem is not in STL but in GCC's implementation of
> ADL, which is finding class names. In this case, the collision isn't in
> STL, it is a collision of end() from Boost.Range and end<> from MPL.
> Changing the STL implementation will *not* fix this problem. My
> understanding of ADL is that it should be used to locate *function*
> overloads. It is meaningless to find class names using ADL. Until gcc's
> rules for ADL are fixed, this problem will persist.

The GCC's ADL is sure broken, but this only shows up in combination with
another problem -- unqualified calls. Just fixing ADL would not solve the
problem -- MPL is free to have a *function* called end(). In this
particular case the Boost.Range needs to be fixed to avoid unqualified
calls, IMO.

Besides it's definitely easier and faster than to wait until GCC ADL get
fixed :-)

Regards,
Arkadiy.


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net