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";
>> }
>>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:

and mpl has an easy to use reference manual:

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

"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 has moved in the vault to cppljevans/mpl.

Boost list run by bdawes at, gregod at, cpdaniel at, john at