
Tobias Schwinger wrote:
* Design
1. I'm missing an extension point in the generators to turn them into a type-preserving variadic input facility. Elaboration:
Currently e.g. "make_vector" is an inline function. My suggestion is to turn it into a global constant of the type of a class template instantiation e.g. "vector_generator<F>".
vector_generator<identity_function> const make_vector = ...
This way it's easy to create user-defined function objects, that take a variable number of arguments, turn them into a tuple and finally use this information to create a user-defined object (that is, entirely without using Boost.PP). Of course that beast would be able to take a stateful functor in its ctor.
Hmmm -- I had hoped for a comment on this one... Did my review read too negative? Was something unclear?
* Did you try to use the library? With what compiler? Did you have any problems?
Yes.
<snip>
I'm still playing with it and hope I can add some details here, soon.
I wanted to use Fusion to write something (well, at least half-way) real for review, so I chose to solve this problem: Call one of a heterogenous set of functors (their call operators might be templates) based on a runtime index with a complexity of O(log N) (basically what an n-ary tree structure of nested switch/case blocks does). The solution o handles unary functors only and doesn't bother with the result (simplicity), o contains numerous workarounds and is far away from being perfect, o requires an MPL-patch [ http://tinyurl.com/ljfdm] to compile, but o nevertheless documents my fight with the library, hopefully including lots of mistakes a new user is tempted to make, so it might work good to inspire upcomnig examples. http://tinyurl.com/l5bxl (source file in the vault) Fusion rocks! Regards, Tobias