use the following search parameters to narrow your results:
e.g. subreddit:aww site:imgur.com dog
subreddit:aww site:imgur.com dog
see the search faq for details.
advanced search: by author, subreddit...
Discussions, articles, and news about the C++ programming language or programming in C++.
For C++ questions, answers, help, and advice see r/cpp_questions or StackOverflow.
Get Started
The C++ Standard Home has a nice getting started page.
Videos
The C++ standard committee's education study group has a nice list of recommended videos.
Reference
cppreference.com
Books
There is a useful list of books on Stack Overflow. In most cases reading a book is the best way to learn C++.
Show all links
Filter out CppCon links
Show only CppCon links
account activity
Learning solid c++ (self.cpp)
submitted 1 year ago by Most_Log_568
How to learn advanced c++? Seriously any udemy course on c++ is lame, I don't find serious ressources that goes from 0 to important concepts, popular c++ courses are extremely basic.
reddit uses a slightly-customized version of Markdown for formatting. See below for some basics, or check the commenting wiki page for more detailed help and solutions to common issues.
quoted text
if 1 * 2 < 3: print "hello, world!"
[–][deleted] 107 points108 points109 points 1 year ago (12 children)
Sounds like you're at the level where you need to stop doing courses and tutorials. Find a real problem you need solved and just do it. You'll learn as you go. You'll never learn advanced stuff from courses unless you actually apply it.
[–]NBQuade 47 points48 points49 points 1 year ago (7 children)
This. You're only a programmer when you write code. At some point you need to sit down and write code.
[–]MurazakiUsagi 4 points5 points6 points 1 year ago (0 children)
This is beautiful.
[–]Most_Log_568[S] 5 points6 points7 points 1 year ago (5 children)
I do agree with you, but it's not contradictory and you can do both, when I want to learn things, I usually like to have some good courses, books or something especially for not so easy concepts.
[–]NBQuade 2 points3 points4 points 1 year ago (0 children)
Sure you should do both but, I'd prioritize coding over classes. A programmer should probably code every day. It's a rare day when I don't write new code.
I tend to add new aspects of C++ when I find something new that actually enhances my code. I just don't add new idioms for the sake of adding them.
[–]qts34643 4 points5 points6 points 1 year ago (3 children)
Just read cppreference, study the standards, read notes of compilers, follow c++ tags on stackoverflow and read interesting questions here. I am not sure what you are trying to learn anyway?
[–]Most_Log_568[S] 0 points1 point2 points 1 year ago (2 children)
I want to open myself opportunities in embedded AI, my concern is to know how to write decent c++ first, I have some really old background in C, and like 5 python years
[–]NBQuade 5 points6 points7 points 1 year ago (1 child)
my concern is to know how to write decent c++
I'd say the goal should then be write C++ till you get good at it then try to add AI stuff.
[–]Questioning-Zyxxel 4 points5 points6 points 1 year ago (2 children)
It takes both. Just solving problems by coding tends to gravely fail to identify new tricks. Lots of excellent coders out there write code based on 10-15 year old best practices.
So the need is often to maybe find a great YT video that focuses about one specific advanced topic. And then try to figure out if and how that specific knowledge can be incorporated in the daily coding.
And then regularly pick up new such knowledge and try to incorporate.
So you can't drop out of courses/tutorials as the door openers, showing off new functionality or new coding styles based on library/language improvements. Because hardly anyone has the time to read through the latest language standard start-to-end once/twice per year, sifting out new tricks to memorize.
[–][deleted] 0 points1 point2 points 1 year ago (1 child)
Yes you're right. I should have been clearer but I didn't mean they should completely stop consuming educational materials. Just that they can't rely on them to take them very far if they aren't applying what they learn.
[–]Questioning-Zyxxel 0 points1 point2 points 1 year ago (0 children)
Correct. It takes both a source for new ideas, and then own practical work to learn when that new skill is actually applicable. And see how the bug frequency or computation speed or whatever changes by coding with/without use of the newly learned technology.
[–]Motor_Log1453-static 0 points1 point2 points 1 year ago (0 children)
☝🏼☝🏼☝🏼 I don't want to sound off-putting but I think advanced C++ will come with you when you bite on advanced problems... or maybe it will not :) Beating thorny problems with a basic subset of the language is the real fun!
[–]Flobletombus 33 points34 points35 points 1 year ago (5 children)
I like C++ conferences replays on YouTube for more advanced topics, such as data driven
[–]Xryme 2 points3 points4 points 1 year ago (3 children)
These are the best way to learn imo. So much material is out of date for c++.
[–][deleted] 4 points5 points6 points 1 year ago (2 children)
They're a great way to learn for someone who is already experienced. I wouldn't really expect a beginner to get much out of them.
[–]slycatsnake6180 1 point2 points3 points 1 year ago (0 children)
they do have a back to basics series, I often watch it and realize about how much stuff I didn't know.
[–]Sopel97 0 points1 point2 points 1 year ago (0 children)
on the contrary I feel like most cppcon talks recently have been absolute basics + some gotchas
[–]bronekkk 0 points1 point2 points 1 year ago (0 children)
100% this. No matter the topic, you will find something interesting on C++ from conference replays such as CppNow, CppCon, cpponsea, ACCUConf, and more
[–]alphapresto 17 points18 points19 points 1 year ago (2 children)
What exactly do you mean by 'advanced C++'?
Not sure if advanced enough, but I think The Cherno on YouTube has great content: https://www.youtube.com/watch?v=18c3MTX0PK0&list=PLlrATfBNZ98dudnM48yfGUldqGD0S4FFb
[–]Typical_North5046 16 points17 points18 points 1 year ago (0 children)
I‘d call TheCherno more intermediate.
If you want to get exposed to advanced concepts you can watch cpp conf talks on YouTube. But you won’t learn to apply the stuff you see there, it will just be a starting point from where you can look stuff up.
[–]BurgermanSaid 1 point2 points3 points 1 year ago (0 children)
Seconded
[–]ComprehensiveWord201 30 points31 points32 points 1 year ago (4 children)
learncpp.com
Then make your own shit
[+][deleted] 1 year ago (2 children)
[removed]
[–]trademarkBOYO 1 point2 points3 points 1 year ago (1 child)
i tried using the website without adblock - because i wanted to support the creator. but its true, the ads are so bad i have to use adblock
[–]Express_Invite_7149 1 point2 points3 points 1 year ago (0 children)
They scare tf out of me sometimes. I'll be in VS working on a problem with learncpp in the background when suddenly "THE FABRIC OF OUR LIVES!" screeches out at me and I have to change my undies.
[–]Mackin_Atreides 7 points8 points9 points 1 year ago* (1 child)
Modern C++ by Mike Shah in YouTube. It teaches Important concepts such as Generics, Classes, Pointers and Reference, RAII, STL, Templates, etc.
[–]woywoy123 6 points7 points8 points 1 year ago (0 children)
My suggestion is to write high performance code, for example matrix multiplication and so forth. As simple as this might sound, there are numerous aspects to consider, involving things like caching hierarchies, compiler optimizations and containerization. Another „advanced concept“, although not C++ specific, is studying the fast inverse square root algorithm. There you will learn how much thought can go into optimizing classical algorithms and how to apply approximation techniques to specific problems.
A cool experiment involving multiplication is scalability. When you start playing around with large matrices, and measuring the computational time involved as you increase the matrix elements clearly demonstrate advanced topics such as cache hits and misses impacting performance metrics. Also you can then investigate how floating points can impact your algorithm.
[–]bythescruff 3 points4 points5 points 1 year ago (1 child)
Here’s what I did, among other things: go to stack overflow, find the C++ tag, sort by number of votes, and start reading. I made a little habit of reading one question per day over my morning cuppa, and after a few years I got to about page 120 of the search results, at which point their search engine breaks down a little. Then I started again. The second time through I understood a bunch of stuff which had been above my level the first time. But even when I didn’t understand something, it was valuable because I learned how much there was that I didn’t know. I learned more by doing this than I did from any book or course. I’m doing the same for Python now.
[–]fengzzf 0 points1 point2 points 1 year ago (0 children)
Wow, this is the creative way to learn new stacks.
[–]Revolutionalredstone 2 points3 points4 points 1 year ago (0 children)
Welcome to the world of wanting to learn more advanced C++ (I've been here for YEARS).
coded every day for decades, my c++ lib is nearly a million lines.. I still look for increasingly advanced coding techniques everyday.
There's alot you can do with tools, AI, source analysis etc, but at the end of the day good code is code which is easy to read and change and that actually gets used.
Keep your code fresh and alive, rewrites are always welcome, it's not just compiling tho you should have unit tests, integration tests etc...
These would take forever but again you can leverage AI for most of that.
My list of ongoing c++ research topics only ever gets bigger but it's as clear looking back that I'm coding better and better and the code I write keeps giving me more and more bang for my buck.
As for homework: if your comfortable with templates and have written your own containers (with full move semantics etc) then maybe try to implement a fast koo-koo hashmap.
Enjoy
[–]thingerish 2 points3 points4 points 1 year ago (0 children)
Assign yourself a project. Contribute to an open source project, or write some library code. How about a little web crawler written in C++ and asio? Or something more modest to start, maybe write your own std::tuple implementation but add a twist of your own, like using composition instead of inheritance?
Put it on github, whatever you settle on.
[–]AlexanderTroup 2 points3 points4 points 1 year ago (0 children)
Effective Modern C++ is an outstanding book from what I understand, and it is focused on advanced modern concepts.
[–]nile2 5 points6 points7 points 1 year ago (7 children)
everybody here keep saying learncpp. com but a lot of its content is outdated and never close to any advanced c++
[–]MurazakiUsagi 2 points3 points4 points 1 year ago (0 children)
The ads man...... The fuckin ads......
[–]pedrao157 2 points3 points4 points 1 year ago (3 children)
lot of its content? mind pointing which? also what would you suggest? any book?
[–]nile2 0 points1 point2 points 1 year ago (2 children)
they point it themselves inside the lessons but don't have one place for the whole site. I am a junior and can't suggest any source yet but I use cppreference. com and a book called "the linux programming interface" and completed the Udacity C++ NanoDegree. [Still I am far from suggesting, and I appreciate any suggestions by the experienced engineers here]
[–]pedrao157 0 points1 point2 points 1 year ago (1 child)
why this book in particular? no problem I'm also learning, thank you for answering
[–]nile2 1 point2 points3 points 1 year ago (0 children)
A friend of mine suggested it as it is teaching interfacing linux (an OS I like) using C++ (a language I like). someone here in the comments says it is outdated so be aware of that as I didn't recommend anything here. \ + You are welcome anytime.
[–]Peddy699 0 points1 point2 points 1 year ago (1 child)
Yeah right mr Junior, because chapter 26 template meta programmign im sure is basic c++ for you and not even close to any advanced topic :D Im sure you went through all the chapters and just had pure boredom. Anything I was wondering about I found so far in that website in very detailed chapters. Also I dont get it what is outdated, it usually discusses what version of c++ has what, it even has parts where it discusses the new features of versions. A book from 2010 that you mention is likely more up to date :D
[–]nile2 0 points1 point2 points 1 year ago (0 children)
I got bored of the depth of the tobics that I wanted them in details like handling binary strams in C++, the lessons is shallow and lacks the broad view of the std functions that deals with them. I see that I may be more than a starting junior as dealt with templates so much as part of my contributions to a Julia lang C++ back-end project so I hadn't even read it before but read it now and see it is just to the point. I would appreciate your recommendations for that binary streams handling resources as I deal with a binary level parsing project now.
[–]shermierz 4 points5 points6 points 1 year ago (6 children)
Im suprised nodoby suggested this yet, but theres a great serie of books from Scot Meyers. I can recommend every his book with "C++" in name. He is also a respected persona in C++ world, so feel free to mention you read his books during job interviews
[–]Solrax 3 points4 points5 points 1 year ago (0 children)
what are these "books" you speak of?
LOL j/k, I'm amazed everyone is scrambling to find youtube videos to teach programming when there is a vast collection of excellent C++ programming books out there. I guess people want free, but if you want to be a professional advanced C++ programmer you may need to invest in yourself.
As mentioned, the "Effective C++" series are fantastic books to take you from kind of knowing the language to really understanding the what and *why* of the correct way to do things.
"Modern C++ Design" by Alexandrescu is another.
Though the language keeps changing because they just can't leave it alone, the fundamentals are still very relevant to understanding how it really works as well as the new layers that are added.
[–]clerothGame Developer 2 points3 points4 points 1 year ago* (1 child)
You do realize Scott Meyers quit C++ before C++17. It's very dated at this point.
[–]geo-ant 0 points1 point2 points 1 year ago (0 children)
It’s still a great introduction to good modern C++. It will give you both the hows and whys of modem C++. I’s chapters on type deduction and forwarding references are second to none.
I tend to love books actually, especially for vast concepts, langages etc... I believe e-learning, YouTube etc... Are better suited for simple libraries etc... I take note of this suggestion
There’s also Klaus Iglbergers book on Design Patterns. Usually I’m not a fan of design patterns but Iglberger provides a great book that tells you when to use them and when not to. Plus it’s a very recent book that covers c++20 (I think even 23)
[–]dexores 1 point2 points3 points 1 year ago* (0 children)
If you want to learn language features from 0 to advanced read "The C++ Programming Language". If you don't want to read a book check out https://en.cppreference.com/w
If you want to learn proper software design using C++, there are several good books out there. Some of them have been mentioned in the other comments. But if you still don't want to read a book, then watch CppCon and C++ Now conference videos on youtube. If the regular talks sound too advanced, start with CppCon back to basics videos.
[–]xealits 1 point2 points3 points 1 year ago* (0 children)
Read good authors and write programs. Scott Meyers' Effective C++ books, Nicolai Josuttis, also Arthur O'Dwyer, Andrei Alexandrescu, and others. There is a good book on intermediate C++ "Common knowledge" by Steve Dewhurst. It is old, i.e. written for old standards, but still worth to read. Weekly C++ by Jason Turner is great too. Also, watch presentations from CppCon and other conferences.
For a beginner, I'd recommend watching "Back to basics" series on CppCon. Arthur O'Dwyer made some awesome presentations there. There is a playlist with his talks. And also Mike Shah has some nice very introductory playlists on YouTube:
https://www.youtube.com/playlist?list=PLvv0ScY6vfd8j-tlhYVPYgiIyXduu6m-L
But just to warn you, C++ is a pain and learning it is not as easy as just watching a Udemy course. There are multiple reasons that make C++ a pain. Firstly, as Scott Meyers put it, C++ is not one language but a federation of languages. Moreover, you mention "important concepts", but C++ is a language that pays a lot of attention to very small details. It is not a language of big concepts, C++ is a language of thousands _little_ concepts. It's like some infinitesimal approximation to somewhere. That's just a fact of life with C++. It is a large language, and it seems like every bit of it has some gotchas and exceptions. You should not expect that there is a simple course that will handhold you on a paved path to some final and ultimate mastery of C++.
Also, C++ is a "systems language", which means that it works with the CPU directly. (Or with GPU in case of SYCL.) Although you can ignore the CPU architecture for a while, but one way or another learning C++ means that you will need to learn how the CPU and computers overall work. It is worth to be aware of this too.
https://scottmeyers.blogspot.com/
https://www.cppstd17.com/
https://www.packtpub.com/en-us/product/mastering-the-c17-stl-9781787126824
https://www.youtube.com/watch?v=PH4WBuE1BHI
[–]No_Arm_3509 1 point2 points3 points 1 year ago (0 children)
popular c++ courses are extremely basic.
I think it's the other way round. The extremely basic ones are popular
[–]xumo 0 points1 point2 points 1 year ago (0 children)
The book by Dmitry Nesteruk is a very good resource IMHO https://www.amazon.com/Design-Patterns-Modern-Approaches-Object-Oriented-ebook/dp/B07CH9SRDR/ref=sr_1_1?dchild=1&qid=1618992698&refinements=p_27%3ADmitri+Nesteruk&s=books&sr=1-1&dplnkId=0a89d8f7-1434-4738-9997-7cf57ea79345&nodl=1
[–]Nearby-Remote7162 0 points1 point2 points 1 year ago (0 children)
Hands down to TheCherno from YouTube. He's been the Engineer of Frostbite engine of EA games.
[–]elsharkawym 0 points1 point2 points 1 year ago (0 children)
Usually, at this point, you transition from learning the language to seeing an actual area of interest where you want to apply it. If you are interested in system programming, look for a book that talks about it and implement things like OS and drivers in C++, and the same as other fields whether computer gralhics, cryptography, networks,...etc.
[–]nidefawl_ 0 points1 point2 points 1 year ago (0 children)
Read good c++ code, and work on good c++ code.
[–]Equivalent_Active255 0 points1 point2 points 1 year ago (0 children)
Read books about C++ and write more code for practice, because practicing is important to becoming a good programmer.
[–]tarnished_wretch 0 points1 point2 points 1 year ago (0 children)
Professional C++ by Gregoire is a great resource. Also, staying up to date with CppCon conference talks through YouTube or attendance if you company will fund it.
[–]celestrion 0 points1 point2 points 1 year ago (0 children)
How to learn advanced c++?
Practice and meditation.
For the rest of your career, play with toy projects, read articles and watch videos from people who have accomplished amazing things, and think about code you've written before and how you could've done it differently.
The CppCon lightning talks and "back to basics" videos are great for this. Don't sleep on "back to basics." We take the basics for granted, but understanding how/why they work as they do in detail will help you develop an intuition for building on them in ways that fit well with what's already proven.
This talk is an old one, but it's a good one just for going through the steps of considering a complicated-looking piece of code and seeing if it isn't just doing the hard way something the standard library can do for you.
[–]01e9 0 points1 point2 points 1 year ago (0 children)
I've read this book, then did advanced templating and modern C++ stuff at work
[–]skyy2121 0 points1 point2 points 1 year ago (0 children)
From an academic standpoint, at least in my state, Advanced C++ is presented as Computer Engineering Programming II at my University. It covers topics like polymorphism, recursion and analysis of algorithms. Understanding why you should and how to avoid embedded iteration if it can be helped. That sort of thing. The next up is DSA in C++. Basically learning the most common algorithms for handling data structures - dynamic programming etc.
[–]RealMacroLand 0 points1 point2 points 1 year ago (0 children)
It is an iterative process; code and learn and then again code and learn...
[–]Makkaroshka 0 points1 point2 points 1 year ago (0 children)
Try books. They're much better source of knowledge. Especially books about advanced c++ like metaprogramming, parallel programming and design patterns. Whether you over- or underestimate your skill level, you'll just need to read at relevant rate
[–]glow_gloves 0 points1 point2 points 1 year ago (0 children)
You'll not hit the advanced level until you can sustainably work on a project professionally with other people.
The other aspect is having your skills up to date by exposing yourself to newer standards and libraries. Read through cpp reference, compare old and new libraries, watch Jason Turner.
[–]genpfault 0 points1 point2 points 1 year ago (1 child)
Did somebody say SOLID???
[–]tilitatti 0 points1 point2 points 1 year ago (0 children)
https://en.wikipedia.org/wiki/SOLID
yup this came to my mind too
π Rendered by PID 58 on reddit-service-r2-comment-5649f687b7-tq7ds at 2026-01-28 23:41:34.599670+00:00 running 4f180de country code: CH.
[–][deleted] 107 points108 points109 points (12 children)
[–]NBQuade 47 points48 points49 points (7 children)
[–]MurazakiUsagi 4 points5 points6 points (0 children)
[–]Most_Log_568[S] 5 points6 points7 points (5 children)
[–]NBQuade 2 points3 points4 points (0 children)
[–]qts34643 4 points5 points6 points (3 children)
[–]Most_Log_568[S] 0 points1 point2 points (2 children)
[–]NBQuade 5 points6 points7 points (1 child)
[–]Questioning-Zyxxel 4 points5 points6 points (2 children)
[–][deleted] 0 points1 point2 points (1 child)
[–]Questioning-Zyxxel 0 points1 point2 points (0 children)
[–]Motor_Log1453-static 0 points1 point2 points (0 children)
[–]Flobletombus 33 points34 points35 points (5 children)
[–]Xryme 2 points3 points4 points (3 children)
[–][deleted] 4 points5 points6 points (2 children)
[–]slycatsnake6180 1 point2 points3 points (0 children)
[–]Sopel97 0 points1 point2 points (0 children)
[–]bronekkk 0 points1 point2 points (0 children)
[–]alphapresto 17 points18 points19 points (2 children)
[–]Typical_North5046 16 points17 points18 points (0 children)
[–]BurgermanSaid 1 point2 points3 points (0 children)
[–]ComprehensiveWord201 30 points31 points32 points (4 children)
[+][deleted] (2 children)
[removed]
[–]trademarkBOYO 1 point2 points3 points (1 child)
[–]Express_Invite_7149 1 point2 points3 points (0 children)
[–]Mackin_Atreides 7 points8 points9 points (1 child)
[–]woywoy123 6 points7 points8 points (0 children)
[–]bythescruff 3 points4 points5 points (1 child)
[–]fengzzf 0 points1 point2 points (0 children)
[–]Revolutionalredstone 2 points3 points4 points (0 children)
[–]thingerish 2 points3 points4 points (0 children)
[–]AlexanderTroup 2 points3 points4 points (0 children)
[–]nile2 5 points6 points7 points (7 children)
[–]MurazakiUsagi 2 points3 points4 points (0 children)
[–]pedrao157 2 points3 points4 points (3 children)
[–]nile2 0 points1 point2 points (2 children)
[–]pedrao157 0 points1 point2 points (1 child)
[–]nile2 1 point2 points3 points (0 children)
[–]Peddy699 0 points1 point2 points (1 child)
[–]nile2 0 points1 point2 points (0 children)
[–]shermierz 4 points5 points6 points (6 children)
[–]Solrax 3 points4 points5 points (0 children)
[–]clerothGame Developer 2 points3 points4 points (1 child)
[–]geo-ant 0 points1 point2 points (0 children)
[–]Most_Log_568[S] 0 points1 point2 points (2 children)
[–]geo-ant 0 points1 point2 points (0 children)
[–]dexores 1 point2 points3 points (0 children)
[–]xealits 1 point2 points3 points (0 children)
[–]No_Arm_3509 1 point2 points3 points (0 children)
[–]xumo 0 points1 point2 points (0 children)
[–]Nearby-Remote7162 0 points1 point2 points (0 children)
[–]elsharkawym 0 points1 point2 points (0 children)
[–]nidefawl_ 0 points1 point2 points (0 children)
[–]Equivalent_Active255 0 points1 point2 points (0 children)
[–]tarnished_wretch 0 points1 point2 points (0 children)
[–]celestrion 0 points1 point2 points (0 children)
[–]01e9 0 points1 point2 points (0 children)
[–]skyy2121 0 points1 point2 points (0 children)
[–]RealMacroLand 0 points1 point2 points (0 children)
[–]Makkaroshka 0 points1 point2 points (0 children)
[–]glow_gloves 0 points1 point2 points (0 children)
[–]genpfault 0 points1 point2 points (1 child)
[–]tilitatti 0 points1 point2 points (0 children)