
AMDG Giovanni Piero Deretta wrote:
That is, something like this is actually possible:
void foo () { int i = lambda // introduce formal parameter names [ _<class left>(), _<class right>() ] // now use them! [_<left>() + _<right>()] // actual parameters values ( 10, 20 ); }
The _<...>() looks a bit clumsy, but it might be actually usable.
I'd rather not use _. arg sound better. lambda<class left, class right>(arg<left>() + arg<right>())
Still the non-descriptive _N placeholders bother me. Using the named placeholder trick it would become:
typedef compose< // introduce formal args names args< class range , class init , class op > // expression , fold(reverse(range), init, op) // function name
reverse_fold;
With complex expressions, this could be quite a readability improvement. Except for confirming that the above expression does actually compile (at least with gcc), I have yet to try to implement it, but I think it should be fairly easy.
Comments
Wow. This is awesome. You'd probably better reference the standard (3.3.1/5) since most people will look at this and be surprised to find that it's legal. (I certainly was) In Christ, Steven Watanabe