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/
*-----*
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." 😂😭
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!
Great to hear!
I think that everyone can learn something important from "Back to Basics" talks. Even speakers themselfs. 😉
This is an EXTREMELY good talk. What an absolute legend
Friendly to c++ to a newbie!
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.
Loud and clear!
great talk, finally somewhat understanding lambdas. thank you!
finally a clear and concise explanation
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.
No, you’re not alone. I am also an embedded C programmer. I feel the same. C++ is vast and confusing.
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.
Nicely explained, especially for c programmers. Clear and simple way to understand lambdas.
this was an excellent talk. Thanks
Excellent talk, thank you!
Glad it was helpful!
Awesome talk !! good explaining, very clear
Glad it was helpful!
bro, you're incredible!
Awesome thanks!!
Question - why Recursive Lambdas was left out ?
Another excellent talk Arthur. I have been using Plusme analogy whenever I get stuck
Great talk!
Wow! Thanks a lot! Now I understand lambdas.
You are most welcome
excellent talk!
Great talk
great talk! Thanks!
Great talk, thanks!
Glad you enjoyed it!
Excellent
crisp.. no nonsense... just what is required to know lambda.
20:30 Why this code is written using stdio.h and printf, that are taken stright from C?
they seem quite useful but incredibly hard to read or interpret sometimes.
0:15 could someone please share the feedback site? I can't see it in the description. Thank you!
I think this was just for the conference attendees
23:25 This explains well, why I abhor implicit conversion in C++.
Errata @22:01 . The code shown at 22:01 is ill-formed.
At 39:00, you mention [this,&] and [this,=], but it does not compile on a recent gcc compiler (11)
well that's expected
18:04 Many redundant shorthands
11:35 As person whoes learn lambdas in Lisp, when I hear something like "Lambda is conceptualy like instance of the class" I cringe.
There are type error at 13:28. vector v is undefined. This is shelf.
It's slideware but yeah… Guess it's an oversight. It happens.
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?
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.
Need... to.... resist...
the puzzle is not correct,g value is 11 all along
I enjoyed Arthur O'Dwyer's talk, but I think lamdas design in C++ is mediocre at best.
This talk is great, but lambdas notation in C++ is awful. For me it is such a big step back from the Lisp family.