Boost logo

Boost Users :

Subject: Re: [Boost-users] [Fusion] Output of adapted ADT
From: Tore Halvorsen (tore.halvorsen_at_[hidden])
Date: 2011-04-08 07:34:45


On Fri, Apr 8, 2011 at 11:53 AM, TONGARI <tongari95_at_[hidden]> wrote:
>> I'm trying to output a string from an adapted class, but I'm getting
>> 1>main.cpp(33): error C2679: binary '<<' : no operator found which
>> takes a right-hand operand of type
>> 'boost::fusion::extension::adt_attribute_proxy<foo,0,false>' (or there
>> is no acceptable conversion)
>> for the following code (boost 1_46_1, msvc2010)
>>
>> Is there a header I'm missing? Very similar code works for
>> BOOST_FUSION_DEFINE_STRUCT - and using ints or doubles also work...
>
> In that case, boost::fusion::front returns not the real element, but a
> attribute_proxy that separates the use of getter & setter.
>
> Here's a workaround:
>     std::cout << (std::string const&)boost::fusion::front(f) << std::endl;

Thanks, but I was not really looking for a workaround. My original problem was
actually trying to use an adapted ADT with spirit::karma, but thought I'd tackle
this seemingly simpler issue first.

(same as above)

        foo f("foo");
        using namespace boost::spirit::karma;

        generate(std::ostream_iterator<char>(std::cout), string << eol, f);

... which fails with error C2039: 'const_iterator' : is not a member
of 'boost::fusion::extension::adt_attribute_proxy<foo,0,true>'

So, I guess that adapted_adts really can't be used in the same
situations as adapted structs?

-- 
Eld på åren og sol på eng gjer mannen fegen og fjåg. [Jøtul]
<demo> 2011 Tore Halvorsen || +052 0553034554

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