On Fri, Apr 8, 2011 at 11:53 AM, TONGARI <tongari95@gmail.com> 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