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 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)
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 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.
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.
C++3x+1 point plus linear algebra. Thank you cppcon.
Very useful, thanks!
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.
Ufff thank you so much :D
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)
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.
cool
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.
Well, you could slowly learn about them using C++ ref and watch this video bit by bit.
Inability to pass views by const-ref is ridiculous.