Boost logo

Boost Users :

From: MB (mb2act_at_[hidden])
Date: 2006-01-22 02:11:31


François Duranleau wrote:
> Hi!
>
> I started to use more extensively Boost.Mpl recently, and I started as
> well to get ADL-related compile errors when a template argument is an
> MPL sequence. I could resolve the conflicts within my own code, but I
> hit one coming from Boost.Range. Here is a simple example that provokes
> an error (tested with g++ 4.0.3 and Boost 1.33.1):
>
> #include <boost/mpl/vector.hpp>
> #include <boost/range/begin.hpp>
> #include <vector>
>
> template < typename T >
> struct dummy {} ;
>
> void trouble()
> {
> typedef dummy< ::boost::mpl::vector< int > > vt ;
> typedef ::std::vector< const vt* > ct ;
>
> boost::const_begin( ct() ) ;
> }
>
> The compiler reports a conflict between boost::begin (called by
> boost::const_begin in <boost/range/begin.hpp>) and boost::mpl::begin.
>
> For now, I resolved it simply by changing the function
> boost::const_begin like this (in <boost/range/begin.hpp>):
>
> namespace boost
> {
> template< class T >
> inline BOOST_DEDUCED_TYPENAME range_const_iterator<T>::type
> const_begin( const T& r )
> {
> return boost::begin( r );
> }
> }
> ^^^^^^^
>
> Similarly for boost::end. However, if that call was really meant to be
> resolved through ADL, then it seems to me there is a problem, and I
> don't know if anything can be done.
>
> Any ideas?

Hi,

I maybe already post it.
I hear ADL dependent way was rejected.
Now that we must always add 'boost::'.
It is obviously a bug of Boost.Range...

Regards,
MB
p-stade.sourceforge.net


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