Back to Basics: Lambdas from Scratch - Arthur O'Dwyer - CppCon 2019

Поділитися
Вставка
  • Опубліковано 20 лип 2024
  • CppCon.org
    -
    Discussion & Comments: / cpp
    -
    Presentation Slides, PDFs, Source Code and other presenter materials are available at: github.com/CppCon/CppCon2019
    -
    Lambdas - even C++14's mysterious "generic lambdas" - are just syntactic sugar atop constructs that are perfectly understandable when approached from the right direction.
    We'll start with the implementation of C-style functions, then move to overloading, function templates, non-static member functions, C++11 lambdas, and then demystify C++14's generic lambdas. We'll cover the minor changes to lambdas in C++17, such as the ability to capture `*this` by value, and indicate some of the minor changes coming in C++2a. Finally, we'll detour into the implementations of std::function and std::bind to show how they're different from lambdas.
    Attendees will leave this session with a clear understanding of how C++ - a language without dynamic typing or garbage collection - can nevertheless support efficient lambda closures.
    -
    Arthur O'Dwyer
    New York
    Arthur O'Dwyer is the author of "Colossal Cave: The Board Game," "Mastering the C++17 STL" (the book), and "The STL From Scratch" (the training course). He runs professional C++ training courses, is occasionally active on the C++ Standards Committee, and has a blog mostly about C++.
    -
    Videos Filmed & Edited by Bash Films: www.BashFilms.com
    *-----*
    Register Now For CppCon 2022: cppcon.org/registration/
    *-----*

КОМЕНТАРІ • 53

  • @ChrisOffner
    @ChrisOffner 2 роки тому +19

    31:45 C++ in a nutshell: "... and we can collapse it all down and replace it with one pair of every kind of brackets, and we get something called a generic lambda. Notice that our template parameter T has disappeared, and instead I'm just writing "auto". This is special syntactic sugar, this is not necessarily obvious but "auto" has something to do with type deduction, type inference. So here, when I write "auto" in the parenthesis, it's not the same "auto" that you would see somewhere else ... This is just a shorthand indicating that this lambda's call operator that takes an argument named "x" is actually a template." 😂😭

  • @ZhaoWeiLiew
    @ZhaoWeiLiew 2 роки тому +29

    Thanks so much for the back to basics series! As a beginner, it has helped me immensely in learning C++. I especially love Arthur’s talks!

    • @CppCon
      @CppCon  2 роки тому +1

      Great to hear!

    • @kamilziemian995
      @kamilziemian995 Рік тому +1

      I think that everyone can learn something important from "Back to Basics" talks. Even speakers themselfs. 😉

  • @alexkfridges
    @alexkfridges 2 роки тому +10

    This is an EXTREMELY good talk. What an absolute legend

  • @hsubyron2277
    @hsubyron2277 4 роки тому +16

    Friendly to c++ to a newbie!

  • @jvsnyc
    @jvsnyc 3 роки тому +4

    At 22:30 I understand the eye rolls some emit when they hear others say "Aren't lambdas just new syntax for function pointers?" -- maybe approximately if no captures take place, otherwise, no.

  • @user-zp3nd6ht8v
    @user-zp3nd6ht8v 4 роки тому +5

    Loud and clear!

  • @dayumnson9769
    @dayumnson9769 3 роки тому +1

    great talk, finally somewhat understanding lambdas. thank you!

  • @edinetgrunhed6000
    @edinetgrunhed6000 Рік тому +2

    finally a clear and concise explanation

  • @bhaskyOld
    @bhaskyOld 3 роки тому +18

    As a embedded C programmer, I find it is very interesting. Great effort to reduce the size of code segment. But I feel intimidated by the varity and vastness of coding syntax to remember in C++. C syntaxes are still very small and easy to remember. I am not sure if it is only me feeling this way.

    • @prem9501
      @prem9501 Рік тому +2

      No, you’re not alone. I am also an embedded C programmer. I feel the same. C++ is vast and confusing.

    • @vercolit
      @vercolit 6 місяців тому

      I agree, I came to C++ from C, since my company used it extensively. But imo, you don't need to know every single detail of C++ to use it pretty effectively. It gives a lot of freedom in designing your solution to a problem, and you generally are able to find several, which all use different features.

  • @asifrizwan42
    @asifrizwan42 Рік тому

    Nicely explained, especially for c programmers. Clear and simple way to understand lambdas.

  • @ArpitAgarwal1
    @ArpitAgarwal1 4 роки тому +1

    this was an excellent talk. Thanks

  • @strakhov
    @strakhov 3 роки тому +7

    Excellent talk, thank you!

    • @CppCon
      @CppCon  3 роки тому +2

      Glad it was helpful!

  • @idanbismut2954
    @idanbismut2954 3 роки тому +2

    Awesome talk !! good explaining, very clear

    • @CppCon
      @CppCon  3 роки тому +1

      Glad it was helpful!

  • @rastaarmando7058
    @rastaarmando7058 3 роки тому +1

    bro, you're incredible!

  • @dacodastrack7271
    @dacodastrack7271 4 роки тому +2

    Awesome thanks!!

  • @raviayyagari9718
    @raviayyagari9718 3 місяці тому

    Question - why Recursive Lambdas was left out ?
    Another excellent talk Arthur. I have been using Plusme analogy whenever I get stuck

  • @zzzXopHeTzzz
    @zzzXopHeTzzz 2 роки тому +1

    Great talk!

  • @tysontakayushi8394
    @tysontakayushi8394 3 роки тому +1

    Wow! Thanks a lot! Now I understand lambdas.

    • @CppCon
      @CppCon  3 роки тому +2

      You are most welcome

  • @ifay1
    @ifay1 3 роки тому

    excellent talk!

  • @flyer0014
    @flyer0014 2 роки тому +1

    Great talk

  • @huang2004
    @huang2004 Рік тому

    great talk! Thanks!

  • @vadymsenkiv6087
    @vadymsenkiv6087 Рік тому +1

    Great talk, thanks!

    • @CppCon
      @CppCon  Рік тому

      Glad you enjoyed it!

  • @numv2
    @numv2 3 роки тому

    Excellent

  • @27harishvk
    @27harishvk 4 місяці тому

    crisp.. no nonsense... just what is required to know lambda.

  • @kamilziemian995
    @kamilziemian995 Рік тому

    20:30 Why this code is written using stdio.h and printf, that are taken stright from C?

  • @jonnyabatti5120
    @jonnyabatti5120 Рік тому +2

    they seem quite useful but incredibly hard to read or interpret sometimes.

  • @milan_shah
    @milan_shah 3 роки тому

    0:15 could someone please share the feedback site? I can't see it in the description. Thank you!

    • @SamWhitlock
      @SamWhitlock 3 роки тому +2

      I think this was just for the conference attendees

  • @kamilziemian995
    @kamilziemian995 Рік тому

    23:25 This explains well, why I abhor implicit conversion in C++.

  • @anoopsrana
    @anoopsrana 2 роки тому

    Errata @22:01 . The code shown at 22:01 is ill-formed.

  • @pruibiebehastoet1914
    @pruibiebehastoet1914 2 роки тому

    At 39:00, you mention [this,&] and [this,=], but it does not compile on a recent gcc compiler (11)

  • @JohnWasinger
    @JohnWasinger 2 роки тому

    18:04 Many redundant shorthands

  • @kamilziemian995
    @kamilziemian995 Рік тому +1

    11:35 As person whoes learn lambdas in Lisp, when I hear something like "Lambda is conceptualy like instance of the class" I cringe.

  • @bharat101976
    @bharat101976 4 роки тому +8

    There are type error at 13:28. vector v is undefined. This is shelf.

    • @LemonChieff
      @LemonChieff 4 роки тому +6

      It's slideware but yeah… Guess it's an oversight. It happens.

  • @heater5979
    @heater5979 3 роки тому +9

    Are people really expected to be able to write code with all this syntactic/semantic complexity ?
    How many years are they expected to study C++ before they can do anything?

    • @jvsnyc
      @jvsnyc 3 роки тому +2

      Having watched some other Arthur O'Dwyer cppcon talks I thought you were being defeatist, but dang, this is for sure a "watch three times" video. Hats off to anyone who didn't know this already that learns everything on one viewing.

    • @jorenheit
      @jorenheit 3 роки тому

      Need... to.... resist...

  • @jeffreyli1871
    @jeffreyli1871 2 роки тому

    the puzzle is not correct,g value is 11 all along

  • @kamilziemian995
    @kamilziemian995 Рік тому +1

    I enjoyed Arthur O'Dwyer's talk, but I think lamdas design in C++ is mediocre at best.

  • @kamilziemian995
    @kamilziemian995 Рік тому +1

    This talk is great, but lambdas notation in C++ is awful. For me it is such a big step back from the Lisp family.