Boost logo

Boost :

From: Eric Niebler (eric_at_[hidden])
Date: 2006-05-08 21:01:38

> - What is your evaluation of the design?

Very nice. Joel and Dan have put a lot of thought into the design of
Fusion. Lazy heterogeneous sequences are very powerful. As Joel and I
have discussed extensively in recent weeks, support for segmented data
structures would make traversal of some sorts of sequences much more
efficient. Joel seems interested and committed to making these changes,
and I'm happy to help.

Like Dave, I'd like to see some more thought put into the extensibility
mechanism. Defining new Fusion iterators is a bit painful, and something
like a Fusion iterator adaptor library might be very useful. That might
be possible if the metafunctions were all part of the same struct. I'd
be satisfied with an analysis that breaks down the pros and cons of such
an approach.

Some miscelaneous questions:

- Why is there a traits::tag_of<> for extracting the sequence tag, but
no corresponding metafunction for extracting the iterator's tag?

- Why do I have to declare both my sequence's category *and* my
iterator's category? Won't there always be an obvious relation between them?

- how is is_view<> used? The Extensibility section says I have to
specialize it, but I don't think it says anywhere why.

- Where is as_tuple? I need it!

> - What is your evaluation of the implementation?

Top notch. Clean and very granular headers. The directory structure
could be a bit simpler, but that's a nit.

> - What is your evaluation of the documentation?

I confess, I haven't looked in detail. I did notice, however, that on
extension.html, there is a reference to the non-existant file
<boost/fusion/core/tag_of_fwd.hpp>. This should be

> - What is your evaluation of the potential usefulness of the library?

I've already found Fusion very useful.

> - Did you try to use the library? With what compiler?

Yes, with VC7.1, VC8 and gcc 3.4.

> Did you have any problems?

None of significance.

> - How much effort did you put into your evaluation? A glance? A
> quick reading? In-depth study?

I've studied Fusion in-depth, and even contributed to its developement.

> - Are you knowledgeable about the problem domain?

Very. I've used Fusion in xpressive and proto, and I've spent a lot of
time in the past few weeks noodling about in Fusion's internals. I see
room for improvement, but not much. Fusion is essential infrastructure.

I vote to accept.

Eric Niebler
Boost Consulting

Boost list run by bdawes at, gregod at, cpdaniel at, john at