>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
>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