On 10/20/2010 11:41 PM, Thomas Heller wrote:
> On Thu, Oct 21, 2010 at 7:50 AM, Thomas Heller
> <thom.hel...@googlemail.com> wrote:
>> On Thursday 21 October 2010 05:11:49 Eric Niebler wrote:
>>> On 10/20/2010 7:49 AM, Thomas Heller wrote:
> <snip>
>>>> Here it goes:
>>>>     namespace detail
>>>>     {
>>>>         template <
>>>>             typename Grammar, typename Visitor, typename IsRule = void>
>>>>         struct algorithm_case
>>>>             : Grammar
>>>>         {};
>>>
>>> Why inherit from Grammar here instead of:
>>>   : proto::when<
>>>         Grammar
>>>       , typename Visitor::template visit<Grammar>
>>>     >
>>>
>>> ?
>>
>> Because I wanted to have an "escape" point. There might be some valid
>> usecase, that does not want to dispatch to the Visitor/Actions. This is btw
>> the reason i didn't reuse or_, but introduced the rules template. To
>> distinguish between: 1) "regular" proto grammars --> no dispatch 2) the
>> rules, which do the dispatch.
> 
> Ok ... after rereading your mini phoenix you solve that problem with
> default_actions.
> Very neat as well!

Right. In fact, I don't think it's necessary or desirable to let the
"Grammar" parameter to "algorithm_case" be anything that isn't an
instantiation of "rules". That is, you have algorithm_case and
algorithm_case_rule. Nuke algorithm_case and rename algorithm_case_rule
to algorithm_case. Also, nuke "rule". The variadic "rules" is all that's
needed. A few orthogonal features are better than lots needless
distracting flexibility.

-- 
Eric Niebler
BoostPro Computing
http://www.boostpro.com
_______________________________________________
proto mailing list
proto@lists.boost.org
http://lists.boost.org/mailman/listinfo.cgi/proto

Reply via email to