
- 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 <boost/fusion/support/tag_of_fwd.hpp>
- 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 www.boost-consulting.com