{"id":10349,"date":"2026-04-04T13:16:58","date_gmt":"2026-04-04T20:16:58","guid":{"rendered":"https:\/\/cppcon.org\/?page_id=10349"},"modified":"2026-04-04T13:16:58","modified_gmt":"2026-04-04T20:16:58","slug":"class-2026-cpp-fundamentals","status":"publish","type":"page","link":"https:\/\/cppcon.org\/class-2026-cpp-fundamentals\/","title":{"rendered":"C++ Fundamentals You Wish You Had Known Earlier 2026"},"content":{"rendered":"<p><em>C++ Fundamentals You Wish You Had Known Earlier<\/em> is a three-day online training course with programming examples, taught by <strong>Mateusz Pusz<\/strong>.\u00a0 It is offered online from 09:00 to 15:00 Aurora time (MDT), 11:00 to 17:00 EDT,\u00a0 17:00 to 23:00 CEST, Monday, September 21st through Wednesday, September 23th, 2026 (<strong>following<\/strong> the conference).<\/p>\n<h2>\u25c8\u00a0<a href=\"https:\/\/cppcon.org\/registration\/\">Register Here<\/a>\u00a0\u25c8\u00a0<a href=\"https:\/\/cppcon.org\/cppcon-academy-2026\/\">See Other Offerings<\/a>\u00a0\u25c8<\/h2>\n<h2>Course Description<\/h2>\n<div class=\"pYfr3c\">\n<div class=\"prOLdf\">\n<div id=\"i.desc.2121517687\" class=\"hyJi2e OIC90c RjsPE\">C++ is a complex programming language. When used correctly, it delivers the best possible performance. Unfortunately, it is often misused, which causes many problems.<\/div>\n<div><\/div>\n<div class=\"hyJi2e OIC90c RjsPE\">However, it turns out that consciously using selected language features can make it relatively easy to produce high-quality software that delivers excellent runtime performance and is error-proof. This coding style is called Modern C++.<\/div>\n<div><\/div>\n<div class=\"hyJi2e OIC90c RjsPE\">The material of this workshop is the first chapter of the trainer&#8217;s most successful and popular training called &#8220;Advanced Modern C++&#8221;. During the class, we will go through all the key features of the C++ language, discuss potential issues and pitfalls, and provide guidelines on how to use them correctly. This training discusses various topics ranging from identifiers that do not result in undefined behavior through vital language features like name lookup, overload resolution, one definition rule, and move semantics up to the design recommendations like Rule of Zero. Among others, we will see how we can provide a custom dynamic allocation strategy for our programs and how we should design and implement customization points for our engine.<\/div>\n<div><\/div>\n<div class=\"hyJi2e OIC90c RjsPE\">If you are wondering if you should attend this class, maybe <a href=\"https:\/\/ahaslides.com\/H8XZA\">this short quiz<\/a> will help you decide:. Those and many other questions will be addressed during the training.<\/div>\n<div><\/div>\n<div class=\"hyJi2e OIC90c RjsPE\"><strong>What You Will Learn?<\/strong><\/div>\n<ul>\n<li class=\"hyJi2e OIC90c RjsPE\">Emphasis on understanding the philosophy and mechanisms of C++ programming language and learning how to reuse this knowledge in one&#8217;s own code.<\/li>\n<li class=\"hyJi2e OIC90c RjsPE\">Particular focus on the usage of C++ templates in practical tasks.<\/li>\n<li class=\"hyJi2e OIC90c RjsPE\">Development of error-unfriendly code.<\/li>\n<li class=\"hyJi2e OIC90c RjsPE\">Selection of useful patterns and techniques that prove in a demanding production code.<\/li>\n<\/ul>\n<div class=\"hyJi2e OIC90c RjsPE\"><strong>Workshop Structure<\/strong><\/div>\n<ul>\n<li class=\"hyJi2e OIC90c RjsPE\">40% lecture<\/li>\n<li class=\"hyJi2e OIC90c RjsPE\">30% discussion<\/li>\n<li class=\"hyJi2e OIC90c RjsPE\">20%hands-on coding<\/li>\n<li class=\"hyJi2e OIC90c RjsPE\">10% knowledge quiz<\/li>\n<\/ul>\n<div class=\"hyJi2e OIC90c RjsPE\"><strong>Environment<\/strong><\/div>\n<ul>\n<li class=\"hyJi2e OIC90c RjsPE\">A laptop with a web browser and access to the Internet<\/li>\n<li class=\"hyJi2e OIC90c RjsPE\">All hands-on exercises will be implemented using <a href=\"https:\/\/godbolt.org\/\">Compiler Explorer<\/a><\/li>\n<\/ul>\n<\/div>\n<\/div>\n<h2>Prerequisites<\/h2>\n<p>The training targets developers with some professional experience with C++ programming language and who realize the problems caused by careless ways of coding in this language. The workshop aims to strengthen the knowledge of the C++ core language and show how to avoid many problems that often appear in the production code.<\/p>\n<h2>Course Topics<\/h2>\n<ul>\n<li>Identifiers and naming conventions<\/li>\n<li>Namespaces<\/li>\n<li>C++ Types and their properties<\/li>\n<li>Value vs reference semantics<\/li>\n<li>Pointers vs references<\/li>\n<li>Unscoped vs scoped enumerations<\/li>\n<li>Classes and friends<\/li>\n<li>Special Member Functions<\/li>\n<li>Rule of Three, Five, and Zero<\/li>\n<li>Value categories<\/li>\n<li>Automatic type deduction<\/li>\n<li>Type conversions<\/li>\n<li>Objects<\/li>\n<li>Alignment<\/li>\n<li>Scope<\/li>\n<li>Lifetime<\/li>\n<li>ODR and inline<\/li>\n<li>Storage duration<\/li>\n<li>Stack vs Heap vs Free Store<\/li>\n<li>Initialization<\/li>\n<li>Name Lookup<\/li>\n<li>Overload Resolution<\/li>\n<li>Customization points<\/li>\n<li>Range-based for loop<\/li>\n<li>Copy elision<\/li>\n<li>Move semantics<\/li>\n<li>Ref-qualifiers<\/li>\n<li>`noexcept`<\/li>\n<\/ul>\n<h2>Course Instructor<\/h2>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-4565 size-thumbnail alignright\" src=\"https:\/\/cppcon.org\/wp-content\/uploads\/2020\/04\/MateuszPusz-150x150.jpeg\" alt=\"Mateusz Pusz\" width=\"150\" height=\"150\" srcset=\"https:\/\/cppcon.org\/wp-content\/uploads\/2020\/04\/MateuszPusz-150x150.jpeg 150w, https:\/\/cppcon.org\/wp-content\/uploads\/2020\/04\/MateuszPusz-300x300.jpeg 300w, https:\/\/cppcon.org\/wp-content\/uploads\/2020\/04\/MateuszPusz.jpeg 640w\" sizes=\"auto, (max-width: 150px) 100vw, 150px\" \/><\/p>\n<p><strong>Mateusz Pusz<\/strong> is a software architect, principal engineer, and security champion with over 20 years of experience designing, writing, and maintaining C++ code for fun and for a living. His main areas of interest and expertise are Modern C++, code performance, low latency, safety, and maintainability.<\/p>\n<p>As the founder of Train IT, Mateusz provides dedicated C++ training and consulting services to corporations worldwide, drawing on over 15 years of teaching experience. He contributes to the industry as a conference speaker and as an active voting member of the ISO C++ Committee (WG21), where he helps shape the language&#8217;s future alongside the world&#8217;s top experts.<\/p>\n<p>Committed to software safety, Mateusz is also the founder and primary author of the mp-units project, an open-source library that strives to make the world safer by ensuring the correct handling of physical quantities in software.<\/p>\n<h2>\u25c8\u00a0<a href=\"https:\/\/cppcon.org\/registration\/\">Register Here<\/a>\u00a0\u25c8\u00a0<a href=\"https:\/\/cppcon.org\/cppcon-academy-2026\/\">See Other Offerings<\/a>\u00a0\u25c8<\/h2>\n","protected":false},"excerpt":{"rendered":"<p>C++ Fundamentals You Wish You Had Known Earlier is a three-day online training course with programming examples, taught by Mateusz Pusz.\u00a0 It is offered online from 09:00 to 15:00 Aurora time (MDT), 11:00 to 17:00 EDT,\u00a0 17:00 to 23:00 CEST, Monday, September 21st through Wednesday, September 23th, 2026 (following the conference). \u25c8\u00a0Register Here\u00a0\u25c8\u00a0See Other Offerings\u00a0\u25c8 [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"class_list":["post-10349","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/cppcon.org\/wp-json\/wp\/v2\/pages\/10349","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cppcon.org\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/cppcon.org\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/cppcon.org\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/cppcon.org\/wp-json\/wp\/v2\/comments?post=10349"}],"version-history":[{"count":3,"href":"https:\/\/cppcon.org\/wp-json\/wp\/v2\/pages\/10349\/revisions"}],"predecessor-version":[{"id":10352,"href":"https:\/\/cppcon.org\/wp-json\/wp\/v2\/pages\/10349\/revisions\/10352"}],"wp:attachment":[{"href":"https:\/\/cppcon.org\/wp-json\/wp\/v2\/media?parent=10349"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}