Thank you so much for this rather mind-blow/opening talk. The future feels intimidating, even discouraging to my little knowledge, and yet so full of awesome promise and gut feeling tells me this stuff might be huge as c++ reinvents itself
I was very confused why half of these examples don't work, then I went to linked godbolt example and realized much of the functionality described in this talk is only available in rangesv3 and not in the standard. Pity.
What always boggled my mind is that cpp folks call callable object a functor which is obviously not a functor. And now when they introduced concept similar to what functor actually is, they called it projection. Why?
"Callable" has been in the C++ standard for a while. As a specific concept it's in C++20 as std::invocable. Projections are very specifically not just any callable, they are unary callables that return a value.
I love C++ for sentimental reasons, the 3rd programming language that I started teaching myself when I was a boy, in the days of MS-DOS. But if it takes one hour to explain ranges... I don't know if I really want to learn these too.
That views cache is yet another red flag: Something is seriously wrong with just how much damage the committee is doing to the language. Also claiming the talk to be about std::ranges and then using rangev3 (which was objectively more mature and superior)... that is just wrong. The example at 40:00 - rv::join(string_view(" -- ")) That is NOT valid code when using std::ranges.
I use "rng" because it is shorter and more obvious... ehr no... it makes your code "non standard" just stick with `std::ranges::` (typing less is not a primary goal)
Thank you so much for this rather mind-blow/opening talk. The future feels intimidating, even discouraging to my little knowledge, and yet so full of awesome promise and gut feeling tells me this stuff might be huge as c++ reinvents itself
I was very confused why half of these examples don't work, then I went to linked godbolt example and realized much of the functionality described in this talk is only available in rangesv3 and not in the standard. Pity.
For instance, the range_v3 join(delimeter) turns out to be join_with(delimeter) in the std library.
Very useful, thanks!
C++3x+1 point plus linear algebra. Thank you cppcon.
Ufff thank you so much :D
cool
What always boggled my mind is that cpp folks call callable object a functor which is obviously not a functor. And now when they introduced concept similar to what functor actually is, they called it projection. Why?
Probably because it has been that way for the past 30 years. Old habit dies hard I guess.
"Callable" has been in the C++ standard for a while. As a specific concept it's in C++20 as std::invocable.
Projections are very specifically not just any callable, they are unary callables that return a value.
Because in the most typical use case demonstrated in the presentation this is exactly how maths calls it.
I love C++ for sentimental reasons, the 3rd programming language that I started teaching myself when I was a boy, in the days of MS-DOS. But if it takes one hour to explain ranges... I don't know if I really want to learn these too.
It takes a little bit more than one hour, it is just a brief video ^_^
Why?
as if 1-2 hours is a lot.... if you are too lazy for even that then i would assume you do not know how to program in any language to begin with.
That views cache is yet another red flag: Something is seriously wrong with just how much damage the committee is doing to the language.
Also claiming the talk to be about std::ranges and then using rangev3 (which was objectively more mature and superior)... that is just wrong.
The example at 40:00 - rv::join(string_view(" -- "))
That is NOT valid code when using std::ranges.
I use "rng" because it is shorter and more obvious... ehr no... it makes your code "non standard" just stick with `std::ranges::` (typing less is not a primary goal)
Inability to pass views by const-ref is ridiculous.