
Douglas Gregor wrote:
Stjepan Rajko wrote:
For my specializable functions, I adapted what is used in fusion, e.g.:
template<typename ProducerTag, ConsumerTag> struct operation_impl;
template<> struct operation_impl<some_producer_tag, some_consumer_tag> { template<typename P, typename C> struct apply { typedef some_result_type type;
static type call(P &p, C &c) { ... } }; };
IIRC, using this form makes operation_impl<some_producer_tag, some_consumer_tag> into an MPL metafunction class, which makes it usable with all of the various metafunction algorithms. That's important if you need to use MPL algorithms across sequences of producer/consumer types.
Yes, that way, fusion can take advantage of MPL facilities like mpl lambda: very useful, IMO. Regards, -- Joel de Guzman http://www.boost-consulting.com http://spirit.sf.net