$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
Subject: Re: [boost] Range begin/end and Fusion begin/end
From: Jeffrey Hellrung (jhellrung_at_[hidden])
Date: 2010-03-19 12:20:35
Mathias Gaunard wrote:
> Steven Watanabe wrote:
> 
>>> Of course, keeping the names begin and end for fusion means we won't 
>>> be able to have a range that is at the same time a fusion sequence, 
>>> even though that could be somewhat useful.
>>
>> Hmm.  I think it works just fine for boost::array, since fusion::begin
>> won't be found by ADL.
> 
> It *may* be found by ADL. Consider the following:
> 
> #include <boost/array.hpp>
> #include <boost/fusion/container/vector.hpp>
> #include <boost/fusion/sequence/intrinsic/end.hpp>
> #include <boost/fusion/adapted/array.hpp>
> #include <boost/range.hpp>
> 
> int main()
> {
>     boost::array<boost::fusion::vector<>, 42> foo;
>     begin(foo); // ambiguous, boost::begin or boost::fusion::begin
> }
> 
> 
> Namespaces of template arguments are also considered for ADL. (Yes, 
> that's a terrible rule -- no idea why it was coined)
Rename boost::fusion::begin/end to 
boost::fusion::some_other_namespace::begin/end ???