Boost logo

Boost Users :

Subject: [Boost-users] [Fusion] Output of adapted ADT
From: Tore Halvorsen (tore.halvorsen_at_[hidden])
Date: 2011-04-08 05:00:32


Hi,

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...

#include <iostream>
#include <string>
#include <ostream>

#include <boost/fusion/include/adapted.hpp>
#include <boost/fusion/sequence.hpp>

class foo
{
public:
        foo(std::string const& str)
                : s(str)
        {
        }

        std::string const& get_s() const { return s; }
        void set_s(std::string const& str) { s = str; }
private:
        std::string s;
};

BOOST_FUSION_ADAPT_ADT(
        foo,
        (std::string const&, std::string const&, obj.get_s(), obj.set_s(val))
        );

int main(int argc, char* argv[])
{
        foo f("foo");
        std::cout << boost::fusion::front(f) << std::endl;
        return EXIT_SUCCESS;
}

-- 
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