C++ UFCS update
krzaq via Digitalmars-d
digitalmars-d at puremagic.com
Tue Feb 16 02:21:50 PST 2016
On Tuesday, 16 February 2016 at 07:59:49 UTC, w0rp wrote:
> Personally, I find this proposal for C++ to be laughable. It's
> like hitch hiking from New York to California, and only getting
> as far as Texas and calling it good.
>
> The great thing about our UFCS is the left-to-right chaining of
> algorithms.
>
> x.map!(...).filter!(...).reduce!(...)
>
> It beats the Hell out of...
>
> reduce!(...)(filter!(...)(map!(...)(x)))
>
> This proposal will encourage non member functions, which is
> good, but will never reach the "aha" moment D had which gave us
> UFCS chaining.
I agree completely. Form my point of view, UFCS is D's biggest
advantage over C++ (beating CTFE and saner templates). It was the
thing that I hoped for the most in C++17. Alas, we'll be forced
to write onion code. This sucks.
By the way, your example in C++ would be even worse:
auto sum_of_filtered = x
.map([&](auto&& val){ foo(val); })
.filter([](auto&& val){ return is_bar(val); })
.reduce(std::plus<>{});
vs
auto sum_of_filtered =
reduce(filter(map(x, [&](auto&& val){ foo(val); }) ,[](auto&&
val){ return is_bar(val); }), std::plus<>{});
Try adding an additional pass there. Where do you put the comma
and second/third argument?
I have no idea how to indent that properly and creating a myriad
of named temporary variables for no valid reason makes me hurt
inside.
More information about the Digitalmars-d
mailing list