Effective Ranges: A Tutorial for Using C++2x Ranges - Jeff Garland - CppCon 2023

Sdílet
Vložit
  • čas přidán 14. 12. 2023
  • cppcon.org/
    ---
    Effective Ranges: A Tutorial for Using C++2x Ranges - Jeff Garland - CppCon 2023
    github.com/CppCon/CppCon2023
    This course provides in introduction to using C++ ranges effectively. Ranges are the largest revamp of the Standard Template Library (STL) in 20 years and impacts daily C++ programming dramatically. The presentation provides a survey of C++20 and C++23 ranges and their application. Note that C++14/17 programmers can also benefit since Range v3 library provides an implementation of many of the discussed facilities.
    The tutorial goes beyond the basics to explore what's behind the ranges library. For example, understand the key differences between algorithms and views and when to apply them. We'll look at some of the concepts used in the design of ranges. And finally we'll explore how ranges fits into the wider standard library with i/o integration, collection integration, and support of legacy stl algorithms.
    Chock full of example code this tutorial will bootstrap programmer's usage of std::ranges.
    ---
    Jeff Garland
    Jeff Garland has worked on many large-scale, distributed software projects over the past 30+ years. The systems span many different domains including telephone switching, industrial process control, satellite ground control, ip-based communications, and financial systems. He has written C++ networked code for several large systems including the development high performance network servers and data distribution frameworks. Mr. Garland’s interest in Boost started in 2000 as a user. Since then he has developed Boost.date_time, become a moderator, served as a review manager for several libraries (including asio and serialization), administered the Boost wiki, and served as a mentor for Google Summer of Code. Mr. Garland holds a Master’s degree in Computer Science from Arizona State University and a Bachelor of Science in Systems Engineering from the University of Arizona. He is co-author of Large Scale Software Architecture: A Practical Guide Using UML. He is currently Principal Consultant for his own company: CrystalClear Software, Inc and assistant chair of the Library Working Group for the C++ standards committee.
    ---
    Videos Filmed & Edited by Bash Films: www.BashFilms.com
    CZcams Channel Managed by Digital Medium Ltd: events.digital-medium.co.uk
    ---
    Registration for CppCon: cppcon.org/registration/
    #cppcon #cppprogramming #cpp
  • Věda a technologie

Komentáře • 17

  • @VoidloniXaarii
    @VoidloniXaarii Před 4 měsíci +3

    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

  • @TheDoomista
    @TheDoomista Před 5 měsíci +11

    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.

    • @DebashishGhoshOfficial
      @DebashishGhoshOfficial Před 4 měsíci +2

      For instance, the range_v3 join(delimeter) turns out to be join_with(delimeter) in the std library.

  • @NickDrian
    @NickDrian Před 5 měsíci +1

    Very useful, thanks!

  • @cristianinujazznight3044
    @cristianinujazznight3044 Před 4 měsíci

    Ufff thank you so much :D

  • @user-ff8qw2ry6u
    @user-ff8qw2ry6u Před 4 měsíci +2

    C++3x+1 point plus linear algebra. Thank you cppcon.

  • @christianchung9412
    @christianchung9412 Před 5 měsíci

    cool

  • @germanassasin1046
    @germanassasin1046 Před 5 měsíci +6

    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?

    • @WutipongWongsakuldej
      @WutipongWongsakuldej Před 5 měsíci +1

      Probably because it has been that way for the past 30 years. Old habit dies hard I guess.

    • @dravorek
      @dravorek Před 4 měsíci +2

      "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.

    • @eugnsp
      @eugnsp Před 2 měsíci

      Because in the most typical use case demonstrated in the presentation this is exactly how maths calls it.

  • @fgfanta
    @fgfanta Před 5 měsíci +3

    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.

    • @northwestfellow6416
      @northwestfellow6416 Před 2 měsíci

      It takes a little bit more than one hour, it is just a brief video ^_^

    • @ABaumstumpf
      @ABaumstumpf Před 26 dny

      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.

  • @eugnsp
    @eugnsp Před 2 měsíci +1

    Inability to pass views by const-ref is ridiculous.

  • @ABaumstumpf
    @ABaumstumpf Před 26 dny

    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.