>Yep, you have created an ambiguity. Sometimes you want func( a )( b ) to
>create an expression template, and sometimes you want it to evaluate the
>function object created by func( a ). If it's not obvious to the
>compiler, it might not be obvious to your users either. I would rethink
>your syntax.

>If you're really enamored with this syntax, you need to distinguish the
>calls somehow. You should have to SFINAE operator() on whether the
>argument is a proto expression or not (with enable_if<is_expr<Arg0> >).
>That means BOOST_PROTO_EXTENDS_FUNCTION isn't going to work for you and
>you need to define them by hand.

This is of course not the complete syntax but yes, you're right, it
might still be confusing, I'll need to try the [] syntax out and see
if the () syntax is worth the trouble.


proto mailing list

Reply via email to