|
Proto : |
Subject: Re: [proto] using BOOST_PROTO_EXTENDS_FUNCTION()
From: Christophe Henry (christophe.j.henry_at_[hidden])
Date: 2010-07-27 09:47:29
>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.
Thanks,
Christophe
Proto list run by eric at boostpro.com