Re: [Spirit-devel] [Spirit Development] Bug in today's boost_trunk -- ambiguous operator >

Eric Niebler <eric-xT6NqnoQrPdWk0Htik3J/[email protected]> Fri, 24 Dec 2010 21:52:30 -0500
Newsgroups gmane.comp.lib.boost.proto,gmane.comp.parsers.spirit.devel
Message-ID <[email protected]>
On 12/24/2010 1:57 PM, Hartmut Kaiser wrote:
>> Just because a type is a Fusion sequence, that doesn't mean it has
>> boost::fusion as an associated namespace. I'm asking why
>> boost::fusion::operator< is in the overload set.
> 
> Ohh, sorry, I misunderstood. That's a good question indeed. However, I have
> no answer, yet.

I know why:

    template <
        typename Iterator
      , typename T1 = unused_type
      , typename T2 = unused_type
      , typename T3 = unused_type
      , typename T4 = unused_type
    >
    struct rule

And in support/unused.hpp:

    using boost::fusion::unused_type;

Your use of fusion::unused_type is making boost::fusion an associated
namespace of qi::rule. I suggest eliminating this needless reuse, or
else use an ADL barrier namespace around Fusion's unused_type definition.

-- 
Eric Niebler
BoostPro Computing
http://www.boostpro.com