└── README.md /README.md: -------------------------------------------------------------------------------- 1 | # About This Document 2 | 3 | #### Usage 4 | This document contains videos and articles about different aspects of C++ programming. The best way to learn from them is to try them out yourself, or in the case of a lecture, do private research and experiments regarding the topic. 5 | 6 | #### Advanced topics 7 | You should not proceed to the topics after [C++ STL](https://github.com/RedSkittleFox/cpp-learning-resources#c-stl) without knowing the basics of C++ (or completing at least one series from [Basics Of C++](https://github.com/RedSkittleFox/cpp-learning-resources#basics-of-c) category). The content following [C++ STL](https://github.com/RedSkittleFox/cpp-learning-resources#c-stl) isn't sorted by the difficulity, everything there is considered advanced C++. You should be able to understand most of it and apply it in your code after completing [Basics Of C++](https://github.com/RedSkittleFox/cpp-learning-resources#basics-of-c) category. 8 | 9 | #### Purpose 10 | This document is a collection of high quality c++ learning materials for both new and experienced c++ programmers. 11 | 12 | #### Contributing 13 | Create either an [issue](https://github.com/RedSkittleFox/cpp-learning-resources/issues) with title and link to the resource you would like to add to this document or create new branch, add some changes and create a pull request. 14 | 15 | #### Comments and suggestions 16 | Please leave your comments, thoughts and suggestions via [Issues](https://github.com/RedSkittleFox/cpp-learning-resources/issues). 17 | 18 | # Table of Contents 19 | 20 | * [Best learning resources for C++](https://github.com/RedSkittleFox/cpp-learning-resources/blob/master/README.md#best-learning-resources-for-c) 21 | * [Basics Of C++](https://github.com/RedSkittleFox/cpp-learning-resources/blob/master/README.md#basics-of-c) 22 | 23 | * [C++ STL](https://github.com/RedSkittleFox/cpp-learning-resources/blob/master/README.md#c-stl) 24 | * [STL Containers](https://github.com/RedSkittleFox/cpp-learning-resources/blob/master/README.md#stl-containers) 25 | * [STL Algorithms](https://github.com/RedSkittleFox/cpp-learning-resources/blob/master/README.md#stl-algorithms) 26 | * [STL Utilities](https://github.com/RedSkittleFox/cpp-learning-resources/blob/master/README.md#stl-utilities) 27 | * [Advanced C++](https://github.com/RedSkittleFox/cpp-learning-resources/blob/master/README.md#advanced-c) 28 | * [Constexpr](https://github.com/RedSkittleFox/cpp-learning-resources/blob/master/README.md#constexpr) 29 | * [Functional](https://github.com/RedSkittleFox/cpp-learning-resources/blob/master/README.md#functional) 30 | * [Time in C++](https://github.com/RedSkittleFox/cpp-learning-resources/blob/master/README.md#time-in-c) 31 | * [Multithreading](https://github.com/RedSkittleFox/cpp-learning-resources/blob/master/README.md#multithreading) 32 | * [Type Related Programming](https://github.com/RedSkittleFox/cpp-learning-resources/blob/master/README.md#type-related-programming) 33 | * [Templates](https://github.com/RedSkittleFox/cpp-learning-resources/blob/master/README.md#templates) 34 | * [Concepts](https://github.com/RedSkittleFox/cpp-learning-resources/blob/master/README.md#concepts) 35 | * [Type deduction](https://github.com/RedSkittleFox/cpp-learning-resources/blob/master/README.md#type-deduction) 36 | * [SFINAE - Substitution Failure Is Not An Error](https://github.com/RedSkittleFox/cpp-learning-resources/blob/master/README.md#sfinae---substitution-failure-is-not-an-error) 37 | * [Meta-programming](https://github.com/RedSkittleFox/cpp-learning-resources/blob/master/README.md#meta-programming) 38 | * [C++ Memory Management](https://github.com/RedSkittleFox/cpp-learning-resources/blob/master/README.md#c-memory-management) 39 | * [Basics of memory management](https://github.com/RedSkittleFox/cpp-learning-resources/blob/master/README.md#basics-of-memory-management) 40 | * [Garbage collection](https://github.com/RedSkittleFox/cpp-learning-resources/blob/master/README.md#garbage-collection) 41 | * [Allocators](https://github.com/RedSkittleFox/cpp-learning-resources/blob/master/README.md#allocators) 42 | * [C++ Aplication Design](https://github.com/RedSkittleFox/cpp-learning-resources/blob/master/README.md#c-application-design) 43 | * [C++ Object Oriented Design](https://github.com/RedSkittleFox/cpp-learning-resources/blob/master/README.md#c-object-oriented-design) 44 | * [C++ Design Patterns](https://github.com/RedSkittleFox/cpp-learning-resources/blob/master/README.md#c-design-patterns) 45 | * [C++ Data Oriented Design](https://github.com/RedSkittleFox/cpp-learning-resources/blob/master/README.md#c-data-oriented-design) 46 | * [C++ Programming Style](https://github.com/RedSkittleFox/cpp-learning-resources/blob/master/README.md#c-programming-style) 47 | * [Generalities about C++ programming](https://github.com/RedSkittleFox/cpp-learning-resources/blob/master/README.md#generalities-about-c-programming) 48 | * [Best practices for C++](https://github.com/RedSkittleFox/cpp-learning-resources/blob/master/README.md#best-practices-for-c) 49 | * [Programing Guidelines](https://github.com/RedSkittleFox/cpp-learning-resources/blob/master/README.md#programing-guidelines) 50 | * [C++ Libraries](https://github.com/RedSkittleFox/cpp-learning-resources/blob/master/README.md#c-libraries) 51 | * [Embeding different languages in C++](https://github.com/RedSkittleFox/cpp-learning-resources/blob/master/README.md#embeding-different-languages-in-c) 52 | * [Custom container libraries for C++](https://github.com/RedSkittleFox/cpp-learning-resources/blob/master/README.md#custom-container-libraries-for-c) 53 | * [raphical interfaces for C++](https://github.com/RedSkittleFox/cpp-learning-resources/blob/master/README.md#graphical-interfaces-for-c) 54 | 55 | 56 | # Learning sources 57 | 58 | - [cppreference.com](https://en.cppreference.com/w/) 59 | 60 | - [Code Blacksmith Youtube Channel](https://www.youtube.com/channel/UC1dkO571jGLzSJcsOE-ESZg) 61 | 62 | - [CppCon Youtube Channel](https://www.youtube.com/user/CppCon) 63 | 64 | - [isocpp.org](https://isocpp.org) 65 | 66 | - [CppCoreGuidelines](http://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines) 67 | 68 | - [ChiliTomatoNoodle Youtube Channel](https://www.youtube.com/c/ChiliTomatoNoodle) 69 | 70 | # Basics Of C++ 71 | - [Beginner C++ Game Programming Tutorial Series](https://youtube.com/playlist?list=PLqCJpWy5FohcehaXlCIt8sVBHBFFRVWsx) 72 | ~ Video Tutorial Series by ChiliTomatoNoodle 73 | 74 | - [C++ programming tutorial series](https://www.youtube.com/watch?v=SQHREey_Yuc&list=PLfVsf4Bjg79Cu5MYkyJ-u4SyQmMhFeC1C) 75 | ~ Video Tutorial Series by LearningLad 76 | 77 | - [C++ advanced programming tutorial series](https://www.youtube.com/playlist?list=PLE28375D4AC946CC3) 78 | ~ Video Tutorial Series by Bo Qian 79 | 80 | - [learncpp.com](https://www.learncpp.com/) 81 | 82 | - [C++ Tutorial for Beginners - Full Course](https://www.youtube.com/watch?v=vLnPwxZdW4Y) 83 | ~ Video Tutorial Series by freeCodeCamp.org 84 | 85 | # C++ STL 86 | 87 | ### STL Containers 88 | 89 | - [Reference for all STL Containers](https://en.cppreference.com/w/cpp/container) 90 | 91 | - [STL Containers - Learn Modern C++](https://www.youtube.com/watch?v=fuI7UQ8dg1Q) 92 | ~ Video Tutorial by Code Blacksmith 93 | 94 | - [How to write an STL compatible container](https://medium.com/@vgasparyan1995/how-to-write-an-stl-compatible-container-fc5b994462c6) 95 | ~ Article by Vanand Gasparyan 96 | 97 | - [Writing your own STL container](https://stackoverflow.com/a/7759622/10266364) 98 | ~ Question answer by Mooing Duck 99 | 100 | - [Why does the C++ STL not provide any “tree” containers?](https://stackoverflow.com/a/205985/10266364) 101 | ~ Question Answer by Martin York 102 | 103 | - [Designing a Fast, Efficient, Cache-friendly Hash Table, Step by Step](https://www.youtube.com/watch?v=ncHmEUmJZf4) 104 | ~ CppCon 2017 Talk by Matt Kulukundis 105 | 106 | - [Enough string_view to Hang Ourselves](https://youtu.be/xwP4YCP_0q0) 107 | ~ CppCon 2018 Talk by Victor Ciura 108 | 109 | - [Customizing the Standard Containers](https://youtu.be/NyivAC3WE6g) 110 | ~ CppCon 2017 Talk by Marshall Clow 111 | 112 | - [Implementing static_vector: How Hard Could it Be?](https://youtu.be/I8QJLGI0GOE) 113 | ~ CppCon 2021 Talk by David Stone 114 | 115 | 116 | 117 | ### STL Algorithms 118 | 119 | - [105 STL Algorithms in Less Than an Hour](https://www.youtube.com/watch?v=bXkWuUe9V2I) 120 | ~ ACCU 2018 Talk by Jonathan Boccara 121 | 122 | - [STL Algorithms - why you should use them, and how to write your own](https://www.youtube.com/watch?v=h4Jl1fk3MkQ) 123 | ~ CppCon 2016 Talk by Marshall Clow 124 | 125 | - [STL Algorithms in Action](https://www.youtube.com/watch?v=eidEEmGLQcU) 126 | ~ CppCon 2016 Talk by Michael VanLoon 127 | 128 | - [Writing Standard Library Compliant Data Structures and Algorithms](https://youtu.be/fChDijocVec) 129 | ~ CppCon 2018 Talk by Marc Gregoire 130 | 131 | - [C++17 Parallel Algorithms](https://youtu.be/Ve8cHE9LNfk) 132 | ~ CppCon 2017 Talk by Dietmar Kühl 133 | 134 | - [Fantastic Algorithms and Where To Find Them](https://youtu.be/YA-nB2wjVcI) 135 | ~ CppCon 2017 Talk by Nicholas Ormrod 136 | 137 | ### STL Utilities 138 | 139 | - [tuple<>: What's New and How it Works](https://www.youtube.com/watch?v=JhgWFYfdIho) 140 | ~ CppCon 2016 Talk by Stephan T. Lavavej 141 | 142 | 143 | - [How to Write Well-Behaved Value Wrappers](https://youtu.be/J4A2B9eexiw) 144 | ~ CppCon 2018 Talk by Simon Brand 145 | 146 | - [Effective replacement of dynamic polymorphism with std::variant](https://youtu.be/gKbORJtnVu8) 147 | ~ CppCon 2018 Talk by Mateusz Pusz 148 | 149 | # Advanced C++ 150 | 151 | ### Constexpr 152 | 153 | - [constexpr - Taking Constants to the Next Level](https://www.youtube.com/watch?v=4Vnd2I91s2c) 154 | ~ Video Tutorial by Code Blacksmith 155 | 156 | - [constexpr: Introduction](https://www.youtube.com/watch?v=fZjYCQ8dzTc) 157 | ~ CppCon 2015 Talk by Scott Schurr 158 | 159 | - [constexpr: Applications](https://www.youtube.com/watch?v=qO-9yiAOQqc) 160 | ~ CppCon 2015 Talk by Scott Schurr 161 | 162 | ### Functional 163 | 164 | - [functional: What's New, And Proper Usage](https://www.youtube.com/watch?v=zt7ThwVfap0) 165 | ~ CppCon 2015 Talk by Stephan T. Lavavej 166 | 167 | ### Time in C++ 168 | 169 | - [A <chrono> Tutorial](https://www.youtube.com/watch?v=P32hvk8b13M) 170 | ~ CppCon 2016 Talk by Howard Hinnant 171 | 172 | - [Benchmark Timer](https://www.youtube.com/watch?v=GV0JMHOpoEw) 173 | ~ Video Tutorial by Code Blacksmith 174 | 175 | ### Random 176 | 177 | - [What C++ Programmers Need to Know about Header <random>](https://www.youtube.com/watch?v=6DPkyvkMkk8) 178 | ~ CppCon 2016 Talk by Walter E. Brown 179 | 180 | ### Multithreading 181 | 182 | - [What do you mean "thread-safe"?](https://www.youtube.com/watch?v=s5PCh_FaMfM) 183 | ~ CppCon 2018 Talk by Geoffrey Romer 184 | 185 | - [Thread Synchronization Primitives](https://www.youtube.com/watch?v=n5Pst7CY2vo) 186 | ~ Video Tutorial by Code Blacksmith 187 | 188 | - [Thread Pool](https://www.youtube.com/watch?v=eWTGtp3HXiw) 189 | ~ Video Tutorial by Code Blacksmith 190 | 191 | - [Multithreaded Logger](https://www.youtube.com/watch?v=STQ3hMCTh-w) 192 | ~ Video Tutorial by Code Blacksmith 193 | 194 | - [Memory Barriers](https://www.youtube.com/watch?v=qlkMbxUbKfw) 195 | ~ Video Tutorial by Code Blacksmith 196 | 197 | - Multithreading is the answer. What is the question? [Part 1](https://www.youtube.com/watch?v=GNw3RXr-VJk) 198 | [Part 2](https://www.youtube.com/watch?v=sDLQWivf1-I) 199 | ~ CppCon 2017 Talk by Ansel Sermersheim 200 | 201 | - [The Trap of std::async](https://www.youtube.com/watch?v=ad9wzKR7TAk) 202 | ~ Video Tutorial by Code Blacksmith 203 | 204 | # Type related programming 205 | 206 | ### Templates 207 | 208 | - [Templates in C++](https://www.youtube.com/watch?v=I-hZkUa9mIs) 209 | ~ Video Tutorial by TheChernoProject 210 | 211 | - [Variadic Templates](https://www.youtube.com/watch?v=o1EvPhz6UNE) 212 | ~ Video Tutorial by Jason Turner 213 | 214 | - [Variadic Templates in C++11 / C++14 - An Introduction](https://www.youtube.com/watch?v=R1G3P5SRXCw) 215 | ~ CppCon 2015 Talk by Peter Sommerlad 216 | 217 | - [std::enable_if](https://en.cppreference.com/w/cpp/types/enable_if) 218 | 219 | - [Using Template Magic to Automatically Generate Hybrid CPU/GPU-Code](https://youtu.be/Xd4NVV-Uy0I) 220 | ~ CppCon 2018 Talk by Elmar Westphal 221 | 222 | - [C++ Templates Revised](https://youtu.be/ULX_VTkMvf8) 223 | ~ CppCon 2017 Talk by Nicolai Josuttis 224 | 225 | - [C++ Template Programming](https://www.3dgep.com/beginning-cpp-template-programming/) 226 | ~ Article by Jeremiah 227 | 228 | ### Concepts 229 | 230 | - [Concepts: The Future of Generic Programming (the future is here)](https://www.youtube.com/watch?v=HddFGPTAmtU) 231 | ~ CppCon 2018 Talk by Bjarne Stroustrup 232 | 233 | - [Concepts in 60: Everything you need to know and nothing you don't](https://www.youtube.com/watch?v=ZeU6OPaGxwM) 234 | ~ CppCon 2018 Talk by Andrew Sutton 235 | 236 | ### Type deduction 237 | 238 | - [Type Deduction and Why You Care](https://www.youtube.com/watch?v=wQxj20X-tIU) 239 | ~ CppCon 2014 Talk by Scott Meyers 240 | 241 | - [Type Traits - what are they and why should I use them?](https://www.youtube.com/watch?v=VvbTP_k_Df4) 242 | ~ CppCon 2015 Talk by Marshall Clow 243 | 244 | - [Template Type Deduction](https://youtu.be/ps4G4L5V7WA) 245 | ~ Video Tutorial by Code Blacksmith 246 | 247 | - [Class Template Argument Deduction for Everyone](https://www.youtube.com/watch?v=-H-ut6j1BYU) 248 | ~ CppCon 2018 Talk by Stephan T. Lavavej 249 | 250 | - [Type Punning in C++17: Avoiding Pun-defined Behavior](https://youtu.be/sCjZuvtJd-k) 251 | ~ CppCon 2017 Talk by Scott Shurr 252 | 253 | ### SFINAE - Substitution Failure Is Not An Error 254 | - [SFINAE documentation](https://en.cppreference.com/w/cpp/language/sfinae) 255 | 256 | - [SFINAE introduction](https://jguegant.github.io/blogs/tech/sfinae-introduction.html) 257 | 258 | - [Check if type has a member method of given signature](https://stackoverflow.com/a/16824239/10266364) 259 | ~ Question Answer by jrok 260 | 261 | - [Custom Overload Sets and Inline SFINAE for Truly Generic Interfaces](https://youtu.be/WBTNCYT20f0) 262 | ~ CppCon 2018 Talk by Vincent Reverdy 263 | 264 | ### Meta-programming 265 | 266 | - [Introduction to C++ Template Metaprogramming](https://www.youtube.com/watch?v=lrziylOWBT4) 267 | ~ NDC Oslo 2016 Talk by Sasha Goldshtein 268 | 269 | - [Modern Template Metaprogramming:A Compendium,Part 1](https://www.youtube.com/watch?v=Am2is2QCvxY) 270 | ~ CppCon 2014 Talk by Walter E.Brown Part 1 271 | 272 | - [Modern Template Metaprogramming:A Compendium,Part 2](https://www.youtube.com/watch?v=a0FliKwcwXE) 273 | ~ CppCon 2014 Talk by Walter E.Brown Part 2 274 | 275 | # C++ Memory Management 276 | 277 | ### Basics of memory management 278 | 279 | - [Modern Memory Management](https://www.youtube.com/watch?v=vvgKqoKa8Mg) 280 | ~ Video Tutorial by Code Blacksmith 281 | 282 | - [std::launder - what is it?](https://www.youtube.com/watch?v=BneDZVf1EMw) 283 | ~ Video Tutorial by Code Blacksmith 284 | 285 | - [Move Semantics Explained](https://www.youtube.com/watch?v=ruHw7E71zBw) 286 | ~ Video Tutorial by Code Blacksmith 287 | 288 | - [Copy and Swap](https://www.youtube.com/watch?v=10wKJgrjN9M) 289 | ~ Video Tutorial by Code Blacksmith 290 | 291 | - [“Want fast C++? Know your hardware!"](https://www.youtube.com/watch?v=BP6NxVxDQIs) 292 | ~ Lecture by Timur Doumler ( CppCon 2017 ) 293 | 294 | ### Garbage Collection 295 | 296 | - [GC FAQ](https://www.iecc.com/gclist/GC-faq.html) 297 | ~ Document regarding garbage collection in C++ 298 | 299 | ### Allocators 300 | 301 | - [std::allocator Is to Allocation what std::vector Is to Vexation](https://www.youtube.com/watch?v=LIb3L4vKZ7U) 302 | ~ CppCon 2015 Talk by Andrei Alexandrescu 303 | 304 | - [Custom Allocator Tutorial](https://www.youtube.com/watch?v=pP15kDeXJU0) 305 | ~ Video Tutorial by Code Blacksmith 306 | 307 | - [How to Write a Custom Allocator](https://www.youtube.com/watch?v=kSWfushlvB8) 308 | ~ CppCon 2017 Talk by Bob Steagall 309 | 310 | - [Efficient Object Pool](https://www.youtube.com/watch?v=37VhkrOiE8M) 311 | ~ Video Tutorial by Code Blacksmith 312 | 313 | - [Local ('Arena') Memory Allocators (part 1)](https://www.youtube.com/watch?v=nZNd5FjSquk) 314 | ~ CppCon 2017 Talk by John Lakos 315 | 316 | - [Local ('Arena') Memory Allocators (part 2)](https://www.youtube.com/watch?v=CFzuFNSpycI) 317 | ~ CppCon 2017 Talk by John Lakos 318 | 319 | # C++ Error Handling 320 | 321 | - [C++ Exception Handling](https://www.tutorialspoint.com/cplusplus/cpp_exceptions_handling) 322 | ~ Article on tutorialspoint.com 323 | 324 | - [Exception Safety](https://www.youtube.com/watch?v=X4TNDFlXzOo) 325 | ~ Video Tutorial by Code Blacksmith 326 | 327 | - [std::exception](https://en.cppreference.com/w/cpp/error/exception) 328 | 329 | - [Custom C++ Exceptions for Beginners](http://peterforgacs.github.io/2017/06/25/Custom-C-Exceptions-For-Beginners/) 330 | ~ Article by Peter Forgacs 331 | 332 | # C++ Application Design 333 | 334 | -[Game Programming from Scratch in C++] (https://guide.handmadehero.org/) 335 | ~By Casey Muratori 336 | - [C++ in Huge AAA Games](https://youtu.be/qYN6eduU06s) 337 | ~ CppCon 2014 Talk by Nicolas Fleury 338 | 339 | - [The C++ Execution Model](https://youtu.be/FJIn1YhPJJc) 340 | ~ CppCon 2018 Talk by Adelstein Lelbach 341 | 342 | - [Game engine using STD C++ 11](https://www.youtube.com/watch?v=8AjRD6mU96s) 343 | ~ CppCon 2016 Talk by Jason Jurecka 344 | 345 | - [Modern User Interfaces for C++](https://www.youtube.com/watch?v=RXTfC-35Nx8) 346 | ~ CppCon 2015 Talk by Milian Wolff 347 | 348 | - [EA’s Secret Weapon: Packages and Modules](https://youtu.be/NlyDUQS8OcQ) 349 | ~ CppCon 2017 Talk by Scott Wardle 350 | 351 | - [Naivety of Creating Cross-Platform, Modern C++ Libraries...](https://youtu.be/JPdohAomZD8) 352 | ~ CppCon 2017 Talk by Jonathan Henson 353 | 354 | - [Modern C++ API Design (part 1 of 2)](https://youtu.be/xTdeZ4MxbKo) 355 | ~ CppCon 2018 Talk by Titus Winters 356 | 357 | - [Modern C++ API Design (part 2 of 2)](https://youtu.be/tn7oVNrPM8I) 358 | ~ CppCon 2018 Talk by Titus Winters 359 | 360 | - [Better Code: Human Interface](https://youtu.be/0WlJEz2wb8Y) 361 | ~ CppCon 2018 Talk by Sean Parent 362 | 363 | - [Modern C++ Interfaces...](https://youtu.be/PFdWqa68LmA) 364 | ~ CppCon 2017 Talk by Stephen Dewhurst 365 | 366 | - [Building C++ Modules](https://youtu.be/E8EbDcLQAoc) 367 | ~ CppCon 2017 Talk by Boris Kolpackov 368 | 369 | ### C++ Object Oriented Design 370 | 371 | - [Intro to the C++ Object Model](https://youtu.be/iLiDezv_Frk) 372 | ~ CppCon 2015 Talk by Richard Powell 373 | 374 | - [Design Patterns and Modern C++](https://www.youtube.com/watch?v=j9arNRRoPe8) 375 | ~ Video Tutorial by JetBrainsTV 376 | 377 | - [Multiple Inheritance problem in C++](https://www.youtube.com/watch?v=7APovvvftQs) 378 | ~ Video Tutorial by Bo Qian 379 | 380 | - [Using Functional Programming Patterns...](https://youtu.be/nR2raX2-a0Q) 381 | ~ CppCon 2017 Talk by Jeremy Demeule & Quentin Duval <- 382 | 383 | #### C++ Design Patterns 384 | 385 | - [Singleton Design Pattern](https://www.youtube.com/watch?v=2SIpresDYVc) 386 | ~ Video Tutorial by Code Blacksmith 387 | 388 | - [Strategy Design Pattern](https://www.youtube.com/watch?v=z84cggFUvCs) 389 | ~ Video Tutorial by Code Blacksmith 390 | 391 | - [Builder Design Pattern](https://www.youtube.com/watch?v=s8S1X-p3TtI) 392 | ~ Video Tutorial by Code Blacksmith 393 | 394 | - [Agent based class design](https://youtu.be/tNXyNa6kf4k) 395 | ~ CppCon 2017 Talk by Odin Holmes 396 | 397 | - [Design Patterns for Low-Level Real-Time Rendering](https://youtu.be/mdPeXJ0eiGc) 398 | ~ CppCon 2017 Talk by Nicolas Guillemot <- 399 | 400 | ### C++ Data Oriented Design 401 | 402 | - [Implementation of a component-based entity system in modern C++](https://youtu.be/NTWSeQtHZ9M) 403 | ~ CppCon 2015 Talk By Vittorio Romeo <- 404 | 405 | - [Data Driven Entity Component System in C++17](https://www.youtube.com/watch?v=tONOW7Luln8) 406 | ~ Code Europe Autumn 2017 Talk K.Kisielewicz 407 | 408 | - [OOP Is Dead, Long Live Data-oriented Design](https://www.youtube.com/watch?v=yy8jQgmhbAU) 409 | ~ CppCon 2018 Talk by Stoyan Nikolov 410 | 411 | # C++ Programming Style 412 | 413 | ### Generalities about C++ programming 414 | 415 | - [Make Classes Great Again! (Using Concepts for Customization Points)](https://www.youtube.com/watch?v=WsUnnYEKPnI) 416 | ~ CppCon 2017 Talk by Vinnie Falco 417 | 418 | - [Operator Overloading: History, Principles and Practice](https://youtu.be/zh4EgO13Etg) 419 | ~ CppCom 2018 Talk by Ben Deane 420 | 421 | - [How to Write Effective Documentation for C++ Libraries...](https://youtu.be/YxmdCxX9dMk) 422 | ~ CppCon 2017 Talk by Robert Ramey 423 | 424 | - [Dynamically Loaded Libraries Outside the Standard](https://youtu.be/-dxCaM4GOqs) 425 | ~ CppCon 2021 Talk by Zhihao Yuan 426 | 427 | ### Best practices for C++ 428 | 429 | - [Readable C++](https://youtu.be/zUVQhcu32rg) 430 | ~ CppCon 2016 Talk by Timur Doumler <- 431 | 432 | - [Building Software Capital: How to write the highest quality code and why](https://youtu.be/ta3S8CRN2TM) 433 | ~ CppCon 2016 Talk by David Sankel <- 434 | 435 | - [Secure Coding Best Practices: Your First Line Is The Last Line Of Defense (1 of 2)](https://youtu.be/n4Yf2tBeAbE) 436 | ~ CppCon 2018 Talk by Matthew Butler <- 437 | 438 | - [Secure Coding Best Practices: Your First Line Is The Last Line Of Defense (2 of 2)](https://youtu.be/i0m0FBD-McY) 439 | ~ CppCon 2018 Talk by Matthew Butler <- 440 | 441 | - [Applied Best Practices](https://www.youtube.com/watch?v=DHOlsEd0eDE) 442 | ~ CppCon 2018 Talk by Jason Turner <- 443 | 444 | - [Practical Performance Practices](https://www.youtube.com/watch?v=uzF4u9KgUWI) 445 | ~ CppCon 2016 Talk by Jason Turner <- 446 | 447 | - [Writing Good C++14... By Default](https://www.youtube.com/watch?v=hEx5DNLWGgA) 448 | ~ CppCon 2015 Talk by Herb Sutter <- 449 | 450 | - [Easy to Use, Hard to Misuse: Declarative Style in C++](https://www.youtube.com/watch?v=I52uPJSoAT4) 451 | ~ CppCon 2018 Talk Ben Deane <- 452 | 453 | ### Programing Guidelines 454 | 455 | - [C++ `const` correctness guidelines](https://isocpp.org/wiki/faq/const-correctness) 456 | 457 | - [CppCoreGuidelines](http://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines) 458 | 459 | - [10 Core Guidelines You Need to Start Using Now](https://www.youtube.com/watch?time_continue=498&v=XkDEzfpdcSg) 460 | ~ CppCon 2017 Talk by Kate Gregory 461 | --------------------------------------------------------------------------------