$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
From: Joel de Guzman (joel_at_[hidden])
Date: 2007-10-23 09:46:05
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