Back to Basics: Templates in C++ - Nicolai Josuttis - CppCon 2022

Поділитися
Вставка
  • Опубліковано 3 лют 2025

КОМЕНТАРІ • 50

  • @cobaltno51
    @cobaltno51 10 днів тому +1

    As someone looking in from the outside it is absolutely insane that it took until C++20 to implement type constraints for templates. The deepest respect to all programmers that were able to wield templates correctly before that change. What a crazy language.

  • @moderncpp
    @moderncpp 2 роки тому +33

    Great talk. I believe that understanding templates reveals most of the C++ programming language.

  • @thestarinthesky_
    @thestarinthesky_ 3 місяці тому +2

    Thanks CppCon for uploading videos here. so much appreciate it. Couldn't be more proud of this great community.

  • @wigglyk2796
    @wigglyk2796 2 роки тому +13

    Wow the master himself. His book on templates is excellent. Thanks for this video.

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

      Glad to hear that you enjoyed this presentation!

  • @thestarinthesky_
    @thestarinthesky_ 3 місяці тому +1

    You're brilliant! I LOVE your amazing books and you're my role model. Thanks for contributing to the world of C++

  • @parthapratimmukherjee
    @parthapratimmukherjee 10 місяців тому +1

    Its amazing how Nico can make extremely complex topics approachable. I bought all his books!

  • @deadbird99
    @deadbird99 Рік тому +9

    Hands down the best templates course I've ever had. Thanks!!

  • @superscatboy
    @superscatboy 2 роки тому +17

    Nico is a great speaker, I've been looking forward to this one!

  • @prafulsrivastava7684
    @prafulsrivastava7684 2 роки тому +5

    This is exactly what I was looking for! Great talk!

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

    A truly insightful talk!

  • @OptimusVlad
    @OptimusVlad 2 роки тому +5

    Wow, this is trippy. Didn't know this was a thing:
    if constexpr (requires {coll.push_back(val);})

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

    Well done! Engaging throughout.

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

    That's a pure pleasure to listen to the prelection like this. Thank you!

  • @stevea.b.9282
    @stevea.b.9282 6 місяців тому

    Fantastic talk, thank you, I'm just starting to learn templates and this helped immensely, many thanks.

  • @Tony-tu8uz
    @Tony-tu8uz 2 роки тому +1

    Very good! Thank you for the talk!

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

    thank you. even better the second time around! : )

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

    Excellent talk, thank you.

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

    Great talk

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

    Templates are pretty awesome now, as is this talk ;)

  • @the_real_foamidable
    @the_real_foamidable 2 роки тому +21

    Very cool talk. Always good to recapitulate the basics - there are to many things we use without understanding the underlying tech and history.
    BTW: Where can I get this awesome T-Shirt?

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

    Looks pretty exciting!

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

    Super Sir, impressed :)

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

    Great talk man!

  • @sky_is_the_limit_13
    @sky_is_the_limit_13 5 місяців тому

    Great talks! I love your books! You're absolutely amazing. BTW, I am looking for "Back to Basics 2022" playlist but couldn't find it.

  • @xudongsun
    @xudongsun 2 роки тому +2

    love his tshirt. where can I get one?

  • @guillermotomasini
    @guillermotomasini 28 днів тому

    thanks

  • @bareminimum-mrtz
    @bareminimum-mrtz 5 місяців тому

    Thankyou so much !!

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

    Josuttis, thank you.

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

    Very useful

  • @ZackDia-Ptr
    @ZackDia-Ptr Рік тому

    Good stuff...

  • @dark808bb8
    @dark808bb8 Рік тому +6

    We need an "if compiles{" expression that takes the first branch if the code in that branch compiles 😅

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

      The much needed. We need better metaprogramming.

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

    35:46 std::complex is only specified for float, double and long double, not for int.

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

    nice talk.
    i had one query on slide no.31, why recursive call to "if" statement when you know number of var args. why not "range for".

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

      You can't iterate on an argument pack like you would do with a container, because the types of the various elements could be different.

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

      In his specific example you could avoid recursion using a fold expression.

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

      There isn't a foreach construct in C++ that would allow you to loop through a range of data of different data types at runtime. C++ foreach works on only those data types that have implemented the basic input iterator related operators defined by the requirements of input iterators (begin(), end() operator++() and operator*). In the example on slide 31 you just want to print every fn argument on a separate line (where fn argument is of a certain type for which ostream& operator

  • @djupstaten2328
    @djupstaten2328 2 роки тому +2

    This is why a TypeEval function is screaming to be created. I am 100% certain the std::people can create a better one than I can. Typeid() doesn't actually consider a tuple of string/int/string the same type as a tuple of variant/variant/map as the same types so there is no secure way to funnel them into whatever place or process they need to be. A bool function is totally fine as long as it is general (i.e. one container type instance should match with another, and with its type-name, regardless of their particular flavor of chaos inside). Knowing everything at compile time is neither realistic nor creatively workable. "Strongly typed" needs to not just be a begrudging neurosis or a religious mantra but also lead to supplying the proper tools for the coder to secure this strength on his or her end.

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

    Interesting talk, though not as 'basic' as I assumed.
    It would have been helpful if the speech bubbles were removed; the code in the speech bubbles could have been placed side-by-side with the code on the left. For example, at 4:18, the text in the speech bubble could have been replaced with the code on the left but with "T" and "typename" swapped out for "CustomType" and "class". The explanation need not change.
    4:16 "...use a better name, like CustomType as shown in the example on the right".
    3:37 "...can be replaced by class, as you can see in the example on the right..."
    Edit: I just noticed the speech bubbles do help as annotations in other slides.

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

    C with better structure, which is c++.

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

    I call function templates for 145 000 different types, so I end up with 145 000 functions generated. Wow, really nice feature.

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

    pReality = (UnconditionalSurrender *)pVictoryPlan;

  • @googledeus
    @googledeus Рік тому +8

    Keep C++ away from stupid politics

  • @ПетрПроценко
    @ПетрПроценко 2 місяці тому

    BTW if you stop Putin (i.e. perform a successful coup in Russia) things are guaranteed to take a turn for the worse. If you are as invested in political situation in Russia as I am an expert in templates in C++ (I know that < > now does not always mean "include a library from a standard location of all libraries") maybe you should consider first studying, then preaching?

  • @__hannibaalbarca__
    @__hannibaalbarca__ 2 роки тому +18

    _CppCon_ please keep politic out.

    • @toxic_champ
      @toxic_champ 5 місяців тому

      they can't, there is "con" in channel's title. So following the agenda is what they have to do

    • @rahulc480
      @rahulc480 4 місяці тому +1

      Just to understand, what are you talking about

    • @nikon800
      @nikon800 2 місяці тому +1

      @@rahulc480 See top left corner of the slide.