
Joel de Guzman <joel@boost-consulting.com> writes:
David Abrahams wrote:
Joel de Guzman <joel@boost-consulting.com> writes:
Joel de Guzman wrote:
Hello,
I shall be putting Fusion in the CVS (HEAD) soon. The old Fusion(1) under the Spirit directory will cease to exist. I shall try to adjust all boost libraries that rely on it to use the new Fusion2 instead. Fusion2 is in CVS now. I adjusted tr1::tuple to use Fusion2 instead.
Totally cool!
Did you write the necessary components to make boost::tuple and boost::cons conforming fusion tuples?
Not yet. There are still lots of work to do, but that's a high item in the todo list. One higher priority item is to make it easier to make conforming fusion sequences. It would be a good idea to do that first and leverage that for boost::cons. There's also an interesting use-case that became apparent recently: making arbitrary structs/classes conforming sequences easily-- as easy as providing a single function. Pardon me if this is rather sketchy at this point, but imagine being able to write:
Our user defined struct:
struct point { float x, float y; };
Customization:
fusion::map<keys::x_, keys::y_, float&, float&> as_fusion_sequence(point& p) { return fusion::map_tie<keys::x_, keys::y_>(p.x, p.y); }
Use:
point p = { 123.456, 789.012 }; fusion::for_each(p, std::cout << _1 << std::endl);
That's nice, but I don't think it's really the same thing. Doesn't it incur an extra level of indirection? -- Dave Abrahams Boost Consulting www.boost-consulting.com