Templates in C++

  Рет қаралды 580,343

The Cherno

The Cherno

6 жыл бұрын

Patreon ► / thecherno
Twitter ► / thecherno
Instagram ► / thecherno
Discord ► thecherno.com/discord
Series Playlist ► thecherno.com/cpp
Thank you to the following Patreon supporters:
- Samuel Egger
- Dominic Pace
- Kevin Gregory Agwaze
- Sébastien Bervoets
- Tobias Humig
- Peter Siegmund
Gear I use:
-----------------
BEST laptop for programming! ► geni.us/pakTES
My FAVOURITE keyboard for programming! ► geni.us/zNhB
FAVOURITE monitors for programming! ► geni.us/Ig6KBq
MAIN Camera ► geni.us/t6xyDRO
MAIN Lens ► geni.us/xGoDWT
Second Camera ► geni.us/CYUQ
Microphone ► geni.us/wqO6g7K

Пікірлер: 590
@AhmedTahagg
@AhmedTahagg 4 жыл бұрын
"By no means is this going to be the only video I make on templates" - The Cherno 2017
@PwnySlaystation01
@PwnySlaystation01 4 жыл бұрын
Hah just came here to say this
@GoatTwinkie
@GoatTwinkie 4 жыл бұрын
F
@joestevenson5568
@joestevenson5568 4 жыл бұрын
:(
@alltheway99
@alltheway99 4 жыл бұрын
Could use more videos on templates 🙂
@josephs.7960
@josephs.7960 3 жыл бұрын
Well that was a fucking lie
@sigmareaver680
@sigmareaver680 2 жыл бұрын
For all the novices out there, I think there's one important thing he overlooked regarding using templates. With templates, you must either write AND use them inside a SINGLE source (cpp) file, OR you must write them ENTIRELY inside a header file. Unlike a regular function or class, you can NOT declare them inside a header file and then define them inside a source file. The linker won't be able to link the templates if you do.
@Austin_Rummel
@Austin_Rummel Жыл бұрын
Thank you! I was just about to do that.
@rretro2042
@rretro2042 Жыл бұрын
Also you could write the declarations inside a .h header file and the definitions inside .tpp file
@techwithdipufrom0ton621
@techwithdipufrom0ton621 8 ай бұрын
This video reduces the ambiguity about templates in C++ which was increased by other video tutorials. Thanks bro.
@piyushudhao597
@piyushudhao597 8 ай бұрын
Can you separate the declaration and implementation in hpp and cpp files, and then include the cpp file at the end of the hpp file? Its technically the same thing but more organized i guess.
@kiara_kb8214
@kiara_kb8214 4 ай бұрын
Ok
@baaryl
@baaryl 6 жыл бұрын
I love this series. Motivated me to learn c++ and just got my first job as a software engineer. Keep it up!!!
@greatbullet7372
@greatbullet7372 6 жыл бұрын
love to read that :)
@radoznalipustolov2693
@radoznalipustolov2693 6 жыл бұрын
Congratulations! If it's not the secret, what kind of software development you do?
@padelafterdark
@padelafterdark 6 жыл бұрын
what resources did you use to learn C++ and what techniques did you do to learn it? Thanks
@baaryl
@baaryl 6 жыл бұрын
Nikola013 First of all I have no idea how to reply directly to your comment - so sorry for that. Anyway, this in not a secret :D I work in telecommunication
@baaryl
@baaryl 6 жыл бұрын
Mark Tilbrook Just like befor dont know how to reply to your comment directly. Nothing special at all. Two books (one of authors was Stephen Prata, "professional c++" Solter and Kleper ), some videos like this and compiler and build some simple app (e.g calculator). Next step was to take part in c/c++ academy (it's kind of course) organised by the company in which I work now :)
@myj313
@myj313 4 жыл бұрын
I know he’s an expert in C++ because he can talk about single concept for ~20 min, where every second counts 👍
@mantaz3068
@mantaz3068 3 жыл бұрын
I think I never watched a 20 min video about a single concept without skipping any part before this
@typeterson8376
@typeterson8376 2 жыл бұрын
I judge how good of a teacher a KZfaqr is by whether or not I need to put their videos on 1.25x speed, because some are just too slow of speakers of too verbose. His flow of information seems to be just right.
@dennisorbison7318
@dennisorbison7318 Жыл бұрын
you know when you are a noob when you need every second to understand a concept.
@bulentgercek
@bulentgercek Жыл бұрын
@@dennisorbison7318 If you want to learn something, you have to start with the basics. Otherwise, you will have memorized, which will cause the knowledge to be erased from your mind over time. So learning something that works for you always requires starting from the basics. The person who learns should not have an ego anyway. The word noob is an expression of the self-conceit of the person who uses it. Because no matter how much you learn, there is always something to learn in the details, even in a subject you know very well. Learning has no end. Also, no matter what your mastery level is, you're always going to solidify yourself by repeating the basics. In short, you are always a student. In other words, saying Noob to someone else is a sign of smugness also It is a sign of a lack of self-confidence.
@dennisorbison7318
@dennisorbison7318 Жыл бұрын
@Bulent Gercek I think I am missing context or something, or somebody is missing context, because I am so confused, lol. Did I call somebody a noob? I am pretty sure I was using the word "you" in the general sense, not at anyone specifically. I commented haphazardly as to something I can personally relate with. Bruh, what is up with the assumptions? It's all right though. I forgive you for looking too deep into something and drawing out conclusions with very little context.
@VadimMelnicuk
@VadimMelnicuk 5 жыл бұрын
Simply, the best C++ lessons in existence.
@someone1089
@someone1089 5 жыл бұрын
Template = compile time polymorphism I don't like overuse of template, debugging is a nightmare. I have seen this horror myself.
@ycombinator765
@ycombinator765 4 жыл бұрын
TMP will be even harder Wait for it
@bgzdevtips3762
@bgzdevtips3762 6 жыл бұрын
Another reason you shouldn't want to go too crazy with templates is compilation times. As cherno said, you're basically having the compiler write code for you. If you start having your compiler write a ton of code for you, then be prepared to wait a bit longer for your program to compile.
@ags0004
@ags0004 5 жыл бұрын
Yeah, and worse than that is that headers cannot even be cached for multiple translation units. For each translation unit, you have to generate each header, even if that header was already generated before. This is one of the greatest problems an inefficiencies with the whole header system. I also feel like precompiled headers are sort of a hack rather than a solution to the problem...
@jukit3906
@jukit3906 2 жыл бұрын
@@ags0004 I wonder how will C++20 modules turn out
@koobyroory
@koobyroory 6 жыл бұрын
I love your series! I was having trouble in my C++ class and my TA suggested I should watch your videos. It has helped immensely
@ShivamSingh-ue2qi
@ShivamSingh-ue2qi 6 жыл бұрын
Really appreciate your series.. The way you explain things is so simple and effective
@namahshrestha3226
@namahshrestha3226 6 жыл бұрын
You sir are amazing..we need more from you. Please do not stop making videos
@paintfortauva
@paintfortauva 3 жыл бұрын
This is the first video i've seen from this channel and i can't stop smiling at how easy he has explained templates! i'm so excited i finally get it! well done mate. great video. subbed
@vladlazar94
@vladlazar94 6 жыл бұрын
Great work as always! Your vids are on a totally different level! :D
@yellowlegend245
@yellowlegend245 5 жыл бұрын
This is a magical! the ease you explained one of most confusing and complicated topic is brilliant. pls keep going
@TheDrewCrawford
@TheDrewCrawford Жыл бұрын
These videos are amazing. I spent a whole day trying to figure out how to create an array of an unknown size in a class, only to give up and move on. I see now how it can be possible. So very well explained. This series is getting me though my college courses. Thank you for sharing your knowledge.
@raf.nogueira
@raf.nogueira 6 жыл бұрын
I was trying to understand this Templates for such long time, and only now i understand thank you very much !
@rajatpai5048
@rajatpai5048 5 жыл бұрын
The content of this series very apt and rich. I am recommending this to my friends. Thank you for doing this.
@guozhengdai2247
@guozhengdai2247 6 жыл бұрын
Thanks for this series. I have learned a lot from you!
@brandonflores7419
@brandonflores7419 2 жыл бұрын
Your videos on c++ are AMAZING! Everything that my professor confused me on was ironed out in these 10-20 min videos. Thank you so much🥹
@Light-wz6tq
@Light-wz6tq 6 жыл бұрын
Best video about templates (Your series are awesome)
@creativeclaude5304
@creativeclaude5304 5 жыл бұрын
woow amazing! I love how you actually put it into code and shoe us how its actually running. My instructor would only show it on whiteboard and I could not understand it but, seeing it in code helps so much!
@noctua7771
@noctua7771 6 жыл бұрын
You make learning C++ so easy and entertaining Keep it up!
@milesemanuelpaavola7994
@milesemanuelpaavola7994 3 жыл бұрын
Thank you very much for the tutorials, they are helping me immensely with my Electrical Engineering Studies. This is the 2nd semester I have sourced your tutorials during cram sessions and they have helped. :-D
@fragmister
@fragmister 2 жыл бұрын
I love these video like documentations of individuals aspects of C++. Please keep making these, I love them.
@nyctophilic1790
@nyctophilic1790 3 жыл бұрын
this is probably the best tutorial i have watched, very intuitive. Awsome work brother.
@voodoomotion5855
@voodoomotion5855 4 жыл бұрын
Excellent, I think this will help me a lot in what i'm currently developing! Thanks so much for your great tuition :)
@gabrielgraf2521
@gabrielgraf2521 Жыл бұрын
Wow, I think this was the cleanest sum of templates I have ever seen. Thanks a lot!
@respawn_101slab2
@respawn_101slab2 4 жыл бұрын
Amazing videos, just started watching the channel. I plan to watch every posted video. Keep it up!
@mbwilding
@mbwilding 2 жыл бұрын
Easily the best C++ resource on KZfaq, thanks man!
@ericdecolsales3066
@ericdecolsales3066 6 жыл бұрын
Fantastic class. The basics of templates got so easy now.
@darshandhande8903
@darshandhande8903 5 жыл бұрын
This is one of the best videos of this series!
@MoTharwat-sw2dc
@MoTharwat-sw2dc 9 ай бұрын
Clear, concise and straight to the point.
@orocimarosay1447
@orocimarosay1447 6 жыл бұрын
best tutorials ever please make more since I can't find anywhere else such detailed and advanced information and this information is what can make me a good programer
@MrMunoz-xp2ry
@MrMunoz-xp2ry 3 жыл бұрын
Sometimes when i watch these videos, I replay that mind blown video in my head.
@jackthehammer2245
@jackthehammer2245 6 жыл бұрын
Thanks for the intro for templates. Especially what really happened under the hood. Looking forward to see more of these coming!
@ashish1122000
@ashish1122000 4 жыл бұрын
Your videos are the best. Never stop making 'em.
@freddo1230
@freddo1230 6 жыл бұрын
Really great video, thank you! Explained with such clarity.
@TM-su7vu
@TM-su7vu 2 жыл бұрын
Very simple and clear. I'm glad that I found your channel. Thanks!
@matiassandacz9145
@matiassandacz9145 5 жыл бұрын
IMPRESSIVE explanation. Very very VERY clear. Thank you.
@p30hacker
@p30hacker Жыл бұрын
best explanation of templates I have ever seen. thanks cherno!
@BeingHumanMusic
@BeingHumanMusic 3 жыл бұрын
your delivery is really superb sir. Didn't see anyone like you.
@DanielLiljeberg
@DanielLiljeberg 6 жыл бұрын
The thing I loved back when I started with C++ and learnt about templates (although the syntax can understandably look like drunk talk to people) was the fact that this is NOT some dynamic thing based on some shared base object the entire language uses but still enables you to create equally or more flexible code. By having the compiler generate the needed code for each type you use your templates with you basically add no extra runtime cost. That was awesome to young me. Another great side effect of how templates work and the fact that the template doesn't actually "exist as code" is that you can have a huge library of templates and it would not actually grow your binary a crazy amount unless you use them all. If it instead was a hughe library of "actual code" your binary would contain them all even if you only used a few of them.
@HermanWillems
@HermanWillems 5 жыл бұрын
Fuck yeah C++ is amazing. I makes you feel in control. Understand what happens underneath. You need to know the tradeoffs of certain choices. It has a higher learning curve. But when you manage to learn it... and understand the tradeoffs of things inside the language. It feels like you can do anything. :) Unlike Managed languages or scripts it feels like there is hell of alot unknown black magic going underneath. And that just feels weird. I personally don't like that.
@PumpReactivationProject
@PumpReactivationProject 5 жыл бұрын
@@HermanWillems C++ is amazing indeed. I was doing some lwjgl in java and it was all cool, I thought "Java is so amazing" and then I've stumbled upon decoding images and working with file formats. Oh... I cant use unsigned type... Oh... I can't treat array of bytes as array of ints, I need to iterate through and do a lot of bit shifting. C++ is hard - memory management, mix of different programming paradigms, namespaces, memory allocation, but at the end of the day it gives you power to control your program. Can't imagine going back to java now.
@SuperTravianPlayer
@SuperTravianPlayer 5 жыл бұрын
Awsome video! I love the chill vibe and your voice is great... =)
@jonweinraub
@jonweinraub 2 жыл бұрын
What a much better introduction to templates than just explaining how vector foo or something.
@doingsneakypeakylike
@doingsneakypeakylike 6 жыл бұрын
you make it so easy to understand! Please continue with more c++ vids. thank you :)
@coltenpulis6679
@coltenpulis6679 2 жыл бұрын
i am sitting at work doing code reviews and watching your videos lmao you are a lifesaver
@maxmoeller3597
@maxmoeller3597 2 жыл бұрын
This class stuff got me low key excited
@sakshamdogra
@sakshamdogra 2 жыл бұрын
THIS IS THE BEST VIDEO TO EXPLAIN TEMPLATES. You just earned a subsciber.
@tomhollins9266
@tomhollins9266 5 жыл бұрын
A VERY clear explanation of templates. I will point newbies to your channel.
@GFXNever
@GFXNever 6 жыл бұрын
As a matter of fact, the templates system is turing complete - that means you can actually implement ANY computer program using templates (and that program will run at compile time). Great video !
@stewartzayat7526
@stewartzayat7526 6 жыл бұрын
GFXNever What do you mean by 'using templates'? It's turing complete even without them, so that doesn't make sense to me.
@jakobhellermann6974
@jakobhellermann6974 6 жыл бұрын
GFXNever as a matter of fact, the x86 mov instruction is Turing complete ;)
@MsJavaWolf
@MsJavaWolf 5 жыл бұрын
@@stewartzayat7526 C++ is of course Turing complete at RUNTIME, but with template metaprogramming you can compute anything that you want at COMPILE time. An example that is not template meta programming: constexpr int a = 7 + 8; the compiler will not generate code that moves 7 and 8 to registers and adds them, it will simply add it at compile time and the code will be a = 15; so no calculation has to run at runtime. Template metaprogramming is similar to that, but much more powerful.
@Neko_Void
@Neko_Void 4 жыл бұрын
Oh yeah, i read an article about this and how the template system it's theoretically undecidable, but there were problems with the proving method, i didn't pay much attention to it so i'm not sure
@Kitulous
@Kitulous 4 жыл бұрын
@@stewartzayat7526 I've seen somewhere how people created a power function (a^b) that evaluated powers at compile time.
@LeandroNunesLeandroN
@LeandroNunesLeandroN 4 жыл бұрын
"This can get really crazy, really quickly" is my favourite quote here.
@runetimon
@runetimon 6 жыл бұрын
Dude this video is perfect for some one not understanding templates! :D
@ianpan0102
@ianpan0102 4 жыл бұрын
Best C++ series I could find on the internet
@helgabartok9755
@helgabartok9755 2 жыл бұрын
Love ya 😍😍😍 and of course your series. Every sec worth a treasure!!!
@baltazarus3307
@baltazarus3307 5 жыл бұрын
You're genius! Thanks for this video!
@moeenkamali1288
@moeenkamali1288 2 жыл бұрын
best source of learning cpp ever. thanks man!
@Jumph96
@Jumph96 3 жыл бұрын
Thanks for making this video, I finally have an idea on how this template thing works
@hassanedds3785
@hassanedds3785 3 жыл бұрын
That's the best explination I came across so far , thank you
@sinned_rev
@sinned_rev 4 жыл бұрын
Nice to see that you got straight to the point, where I was able to understand templates after having 90 minutes of programming lecture in the university without understanding a single thing :D
@achrafBadiry
@achrafBadiry 25 күн бұрын
That was a fantastic explanation. thank you very much sir
@ahmedibrahim7585
@ahmedibrahim7585 4 жыл бұрын
Really the best video that explains templates. Thank you alot.
@rishikeyyadav5717
@rishikeyyadav5717 2 жыл бұрын
Really loved this video...even stackoverflow kneeled down before you... thanks again.
@satyajeetkumarjha1482
@satyajeetkumarjha1482 Жыл бұрын
the example used by you is really good.
@harshkn
@harshkn 6 жыл бұрын
Was waiting for this. Please make more template videos soon :D
@user-sd2en6pn3z
@user-sd2en6pn3z 5 жыл бұрын
Why is it that nobody else seems to be able to explain c++ templates so clearly? I probably spent half a day struggling with this, then came upon this video and it was immediately clear. And even if I knew nothing about templates before seeing this, I think I still would have understood just as clearly. Thanks!
@thedrunknmunky6571
@thedrunknmunky6571 Жыл бұрын
Nice sofa. Looks very comfy.
@asfandshakeel8427
@asfandshakeel8427 5 жыл бұрын
That is brilliant mate. Thanks!
@prasannakumarkottakota68
@prasannakumarkottakota68 Жыл бұрын
Thank you, it is wonderful explanation!
@MadAustinite
@MadAustinite 4 жыл бұрын
I just learned more in 18 minutes than reading the same thing over and over again in my textbook for over an hour. Thanks man!
@boywonder_YT
@boywonder_YT Жыл бұрын
Fantasitc way of explaing this, thank you
@Nicolas-gq9vu
@Nicolas-gq9vu 6 жыл бұрын
Was waiting for a template video !
@saeed5508
@saeed5508 2 жыл бұрын
great examples, Thank you
@kevinchau5336
@kevinchau5336 6 жыл бұрын
wow.... I'm sooo glad I clicked on this video! thank you so much for the clear explanation!
@devchannel5232
@devchannel5232 3 жыл бұрын
Man, you got me with this nice tutorial, i subscribed! Thanks a lot.
@xarzu
@xarzu 8 ай бұрын
Great job. Good explaination.
@janingvar
@janingvar 3 жыл бұрын
You explain things better than some highly rated C++ lecturers on Udemy.
@cooltuque
@cooltuque 2 жыл бұрын
WOW I just understood a load of stuff I didn't before... Thx Cherno. Best tutorials ever...
@sidewinder040
@sidewinder040 3 жыл бұрын
Now I understand. A very clear explanation - Thank-you.
@johnadams7843
@johnadams7843 6 жыл бұрын
you won't find a better like to dislike ratio for coding tutorial than your channel, your tutorials are awesome, keep going!
@riscy00
@riscy00 22 күн бұрын
You did a fantastic job explaining things as I'm currently studying C++20 and later C++23 with ESP32 (even though the library is C). My experienced friend with C++ experience elsewhere suggests that I should try a template for class objects, which is why I'm watching this.
@malindasulochana7258
@malindasulochana7258 6 жыл бұрын
dude, you are awesome. brilliant explanation and simple, keep up the good work. (Y)
@boutalbimedchaker2534
@boutalbimedchaker2534 4 жыл бұрын
that was so amazing dude thamk you so much
@hamzaaitbourhim5321
@hamzaaitbourhim5321 4 жыл бұрын
This is the best C++ series I've seen so far.
@taherbensassi2626
@taherbensassi2626 5 жыл бұрын
your really make it look so easy ! thank you
@tunisianleague2457
@tunisianleague2457 4 жыл бұрын
Finally, I got how this weird C++ code in unreal engine works thanks man you made my day!!
@hosseinbiniaz9379
@hosseinbiniaz9379 Жыл бұрын
amazing, very well explained
@KarabauPlay
@KarabauPlay Жыл бұрын
Wow. C++ is so powerful. Lots of possibilities!
@leixun
@leixun 4 жыл бұрын
*My takeaways:* 1. Problem with function overloading 2:02 2. Function template 4:01 3. Class template (variable) 10:06 4. Class template (data type and variable) 12:16 5. Where we may use template 16:10
@iamnotaleapord
@iamnotaleapord 5 жыл бұрын
Really great videos, thank you sir
@ToxicityGameDev
@ToxicityGameDev 6 жыл бұрын
Dude, please don't let this C++ series go for OpenGL, Hope to see them both continue. Keep up the great work!
@pixarfilmz4769
@pixarfilmz4769 6 жыл бұрын
Yeah!
@ErikDaGreat
@ErikDaGreat 5 жыл бұрын
he doesnt like game he likes game engine
@The_Codemaster144k
@The_Codemaster144k Жыл бұрын
@@ErikDaGreat he likes both
@october3518
@october3518 2 жыл бұрын
I wouldn't have started learning C++ if it was not for your videos. I watched starting 18-20 vids then shifted to books because I really needed to clear few concepts. Now I understand a little bit better than past and m back !!
@jonivanwin530
@jonivanwin530 6 жыл бұрын
Hey Cherno, I love your work. Continue like this. I want to ask you if you could make a series of networking, from the basics. Like sockets, client server. Thank you for your work.
@HellPet
@HellPet 3 жыл бұрын
Solid video again. Would like to see one about your own implementation of enable_if and some usages!
@RX7GSLSEowner
@RX7GSLSEowner 4 жыл бұрын
Would like to see a video regarding template metaprogramming. That stuff is mind bending.
@oblivionronin
@oblivionronin 6 жыл бұрын
Hey Cherno ! Love your videos ! Really well done, technical enough to be really usefull and really help out but also very well simplified ! you made a video serie on on OpenGL, I was wondering if you are planning on ever doing something on OpenCL and or Cuda, thoses languages are awesome, but coding examples in thoses are ussually pretty rare. keep up the good work !
@andresvega6001
@andresvega6001 6 жыл бұрын
Thank you, great video!
@MatureFister
@MatureFister 2 жыл бұрын
as someone coming who is a noob and from a high level script language like python small bits like this at 6:15 are super helpful to clear the air
@henokvanni3831
@henokvanni3831 2 жыл бұрын
I love the fact that the first time that he said the template definition i didn't understand, but then he wrote the code and when he repeated the definition i did understand what it meant. Thanks for the videos
@kenan2386
@kenan2386 2 жыл бұрын
My man cherno helped me once again
@samsbuilding3893
@samsbuilding3893 2 жыл бұрын
the way that u explain it bro just u r the G.O.A.T. in this game!
@madhurimaburagohain7438
@madhurimaburagohain7438 3 жыл бұрын
Please make more videos ! I enjoy your videos.
Stack vs Heap Memory in C++
19:31
The Cherno
Рет қаралды 554 М.
Macros in C++
19:36
The Cherno
Рет қаралды 232 М.
FOOLED THE GUARD🤢
00:54
INO
Рет қаралды 63 МЛН
THEY WANTED TO TAKE ALL HIS GOODIES 🍫🥤🍟😂
00:17
OKUNJATA
Рет қаралды 9 МЛН
Универ. 13 лет спустя - ВСЕ СЕРИИ ПОДРЯД
9:07:11
Комедии 2023
Рет қаралды 6 МЛН
OMG😳 #tiktok #shorts #potapova_blog
00:58
Potapova_blog
Рет қаралды 4 МЛН
Conversion Operators in C++
19:56
The Cherno
Рет қаралды 35 М.
Procedural grass OpenGL
0:52
MrEscen
Рет қаралды 2,3 М.
Dynamic Arrays in C++ (std::vector)
14:14
The Cherno
Рет қаралды 372 М.
SINGLETONS in C++
19:16
The Cherno
Рет қаралды 195 М.
Function Pointers in C++
12:41
The Cherno
Рет қаралды 381 М.
How C++ Works
20:21
The Cherno
Рет қаралды 1 МЛН
The 3 Laws of Writing Readable Code
5:28
Kantan Coding
Рет қаралды 315 М.
Every Chess Tip Explained In 10 Minutes
9:42
Chess Thugs
Рет қаралды 16 М.
POINTERS in C++
16:59
The Cherno
Рет қаралды 1 МЛН
FOOLED THE GUARD🤢
00:54
INO
Рет қаралды 63 МЛН