Boost logo

Boost :

From: Larry Evans (cppljevans_at_[hidden])
Date: 2005-02-28 01:19:54


On 02/28/2005 01:56 AM, David Abrahams wrote:
> Larry Evans <cppljevans_at_[hidden]> writes:
>
>
>>After creating:
>>
>> typedef range_c<int,0,3> types;
>> typedef fold
>> < types
>> , empty_base
>> , inherit< arg<2>, arg<1> >
>> >::type tuple_type;
>>
>>I'd like to use for_each on tuple_type. For example:
>>
>>struct print_integral_c
>>{
>> template<int i, typename Right>
>> void operator()(inherit<integral_c<int,i>, Right>)const
>> {
>> std::cout<<i<<"\n";
>> }
>>};
>>
>>for_each<tuple_type>(print_integral_c);
>>
>>However, tuple_type is not a sequence; hence, for_each won't work.
>>I could define the necessary specializations for mpl::begin, etc.,
>>to make it a sequence, but I was wondering if there's any way
>>or any plans to somehow automagically make fold or reverse_fold
>>into a sequence so I could use for_each on it.
>
>
> No. Since fold and reverse_fold are metafunctions (and therefore
> class templates), they can't possibly be sequences (which are always
> types). fold and reverse_fold don't even have to _return_ sequences.

 From my OP, the sentence:

   tuple_type is not a sequence;

I thought would make it obvious that I didn't mean the metafunction, but
the result of invokation of that metafunction.

OTOH, I really should have said "make the result of a fold metafunction
invokation into a sequence". Would that have been sufficient to make
my meaning clear?

>
> I can't understand why you're not using Fusion, or at least trying to
> fit into the Fusion framework, but I'm going to stop flogging that
> horse now.
>

IIUC, Fusion is in flux, based on the post:

http://article.gmane.org/gmane.comp.lib.boost.devel/118011

and mpl has an easy to use reference manual:

   http://www.boost.org/libs/mpl/doc/refmanual/refmanual_toc.html

OTOH, I haven't really looked at fusion, so maybe I should. It's
just I've found mpl very good and I've gotten used to it; hence,
I'm reluctant to change. I'll take a closer look at fusion and
see if I can get it to work, but It's got to do the range_all

   http://article.gmane.org/gmane.comp.lib.boost.devel/117764

"thing" also, and I had some difficulty getting that to work with
mpl; hence, I don't want to go thru that again with fusion, so,
no promises.

BTW, the range_all.zip has moved in the vault to cppljevans/mpl.


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk