|
Boost Users : |
From: Joel de Guzman (joel_at_[hidden])
Date: 2008-01-13 08:36:57
Tobias Schwinger wrote:
>>> (c0,c1,...,cN) being just another 'Case' rather than a 'Sequence'.
>> o..k... Hmm.. so how would the resulting case object for this
>> expression look like:
>>
>> case_c<1>(f1), case_c<2>(f2)
>>
>> ?
>
> template< class SeqCases >
> struct sequenced_case
> {
> SeqCases seq_cases;
>
> typedef SeqCases seq_cases_t;
>
> sequenced_case(SeqCases const& s)
> : seq_cases(s)
> { }
>
> typedef mpl::transform_view< SeqCases,
> fusion::result_of::first<_> > labels;
>
> template< typename Result, class I >
> Result apply(I const&)
> {
> return fusion::at<I>(this->seq_cases);
> }
> };
>
> If case_c<1>(f1) has the type C1 and case_c<2>(f2) has the type C2 the
> comma operator's result type is
>
> sequenced_case< joint_view<C1::seq_cases_t,C2:::seq_cases_t> >
>
> 'seq_cases_t' would not have to be part of the Concept, because
> 'switch_' doesn't care about it.
Sounds good to me! I like it. So, this involves the variation where
a case has an MPL sequence of labels. I knew there's something in
that that I like. Intuition, I guess. That is also why I use the
name case_ regardless of number. A compound case is just another
case anyway. Does not matter how many labels it serves.
Not sure how, implementation-wise, this works for Steven. Steven?
If this pans out, I'll refine the concept one more time.
Regards,
-- Joel de Guzman http://www.boost-consulting.com http://spirit.sf.net
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net