C++20: Get the Details

The Mentoring Program

The mentoring program consists of 16 stations. For each one, you have to invest at least 3 hours per week. Therefore, you can integrate my program into your workday.

16 Stations

  1. Introduction
    • History
    • C++ Compiler Standard Support
    • Preparation
  2. Concepts
    • Motivation
    • Usage
    • Placeholders
    • Abbreviated Function Templates
  3. Concepts
    • Predefined Concepts
    • Definition of Concepts
    • Requires Expressions
    • User-Defined Concepts
    • An Evolution or a Revolution
  4. Modules
    • Advantages
    • Module Interface Unit and Module Implementation Unit
    • Submodules and Module Partitions
    • Guidelines
  5. Comparison
    • Equality Comparison
    • The Three-Way Comparison Operator
    • Safe Comparison of Integers
  6. Constness
    • consteval
    • constinit
    • std::is_constant_evaluated
    • constexpr Containers and Algorithms
  7. Further Core Language Improvements
    • Designated Initialization
    • Templates
    • Lambdas
  8. The Ranges Library
    • Ranges and Views
    • Characteristics
    • Range Adaptors
    • Comparison of std and std::ranges Algorithms
  9. std::span and New Container Functions
    • std::span
    • Unified Deletion of Elements
    • Uniform Checking of Elements
    • String: starts_with and ends_with
  10. Formatting Library
    • Overview
    • Format String
    • User-Defined Types
  11. Calendar and Time Zones
    • Basic Types
    • Time of Day
    • Calendar Dates
    • Time Zones
  12. Standard Library Utilities
    • std::bind_front
    • Mathematical Constants
    • Midpoint and Linear Interpolation
    • Bit Manipulation
    • std::source_location
  13. Coroutines
    • Characteristics
    • The Framework
    • Awaitables and Awaiters
    • The Workflows
  14. Atomics
    • std::atomic_flag
    • std::atomic
    • std::atomic_ref
  15. Synchronization and Coordination
    • Latches and Barriers
    • Semaphores
    • Synchronized Output Streams
  16. Cooperative Interruption
    • std::jthread 
    • std::condition_variable_any
    • std::stop_source, std::stop_token, and std::stop_callback

One Station

Each station consists of theory, practice, and mentoring:

  • Theory
    • Pure theory with about ten slides (video)
    • Applied theory with about five examples (video)
    • Additional posts and training videos
  • Practice
    • Exercises (video)
    • Sample solutions to the exercises (video)
    • Active C++ community in moderated forums
  • Mentoring
    • Live Q&A session each Friday, in which I address forum questions (recorded)
    • One-to-One mentoring at the end of the mentoring program, if requested

Sample Station

How to Participate?

The mentoring starts in July 2023. The program takes four months. You can start at any time and book now.

Four Easy Steps

Here are the necessary steps:

  1. If you don’t have an account, create it here: ModernesCpp.org,
  2. Buy the course using Stripe or a bank transfer. Find the details here: Payment.
  3. I add you to the mentoring program.
  4. Enter the mentoring program.

Mentee Membership and Community Membership

When you mastered your mentoring program, you can extend your Mentee Membership with a Community Membership.

Mentee Membership

  • Member of a mentoring program
  • Includes community membership

 Community Membership

  • Access to the previous mentoring program
  • You cannot participate in the Q&A sessions, but you can watch recorded Q&A sessions
  • Becomes a community member if requested
  • Community membership is €30/month; payable for a year in advance: €360

The Ideal Mentee

First, you need a good knowledge of C++, and you want to become fluent in patterns. If you don’t consider yourself a good C++ programmer, you should first master my basic mentoring program Fundamenalts for C++ Professionals.

You have to invest at least three hours a week and can, therefore, integrate my program into your workday. In the ideal case, your company supports you with time and money.

Here are a few participant profiles I have in mind:

  • Professionals who want to master patterns
  • C++ developers who want to make their next carrier step
  • C++ developers, interested in good software design

More Information

If you need more information, write an e-mail. I’m happy to help.

Send me an E-Mail

What Mentees Say About my Mentoring

Rainer Grimm’s mentoring program Fundamentals for C++ Professionals is truly one of a kind. It opens the door to an immense amount of well structured information to learn all fundamentals of the C++ language with a depth that suits your background knowledge and the amount of time you can spent on the program. With Rainers long experience and knowledge about the language, the mentee’s skills are thoroughly and consistently strengthened every single week of the program.

I am enjoying the program a lot for the fact that it is intense on one hand but perfectly suited for following in parallel to a full time day job, the format and duration allows the material to really get settled. In my opinion the program is highly recommended to everyone that is dedicated to make C++ one of their core skills in a professional career and is prepared to engage with a focussed community of mentees and the excellent mentor Rainer Grimm.

I took this Mentoring Program to deepen my knowledge about C++. I was stunned by the huge amount of Videos and effort Rainer Grimm put into this program.

He does not only provide Videos, Examples and Exercises to explain the different Topics, he also provide further informations regarding those topics (Blog posts, Videos from CppCon etc).

One big advantage of the course is that you could wrote questions directly to Rainer Grimm or into the Forum and he will answer and explain also his answer in the weekly Q&A Sessions at the end of each week.

I could really recommend this Mentoring to beginners and also to intermediate C++ developers.

I am very happy I signed up for Rainer’s mentorship program. The pace is perfect to follow along while having a full time job, and most importantly the content has a great balance between theory and practical knowledge so you can apply what you learn right away. You can also customize the level of difficulty by asking questions in the forum, experimenting with the examples and by reading more of the further materials that Rainer selects for each week.

I like that each week has a clear goal and I believe the combination of the core material, the links to further information and the discussions in the Q&A sessions provide a thorough overview of each topic. Thanks to the program I have met other fellow mentees and have expanded my professional network.

I was happy to sign up for Fundamentals for C++ Professionals mentoring program to deepen my knowledge of C++ programming. There was a fine mixture of video lessons, presentations and zoom meetings to discuss ongoing lessons and ask questions regarding C++ programming one on one with our mentor. The durations may seem little long, but in my opinion it offers a possibility to get a grip on learning resources offered. I would recommend it to enthusiasts trying to expand their knowledge of modern C++.

I am one of those embedded software developers who had always worked with C as main language for embedded development, until my current project which heavily uses C++14/17. The switch was not easy for me as C++’s abstractions bothered me to a great extent. I have tried multiple sources, books, blogs(including Rainer’s Modernes CPP), video courses etc. to learn the language at a deeper/lower level. But I found the mentorship program “Fundamentals for C++ Professionals” to be the most unique and fruitful of all.

The layout of the program introduces you to each topic in at least three levels: basic theory, example to demonstrate how it looks in code, and the most useful level(in my opinion) “Further Information” where Rainer lists out fantastic materials, including his spectacularly exhaustive blog posts. These present you with further deeper aspects of the topics, knowledge of edge cases, cpp best practices and sometimes CPPCon videos where you watch other experts share their knowledge. The articles on best practices are also extremely useful, as you get to know best practices of each topic(e.g. class design, template programming etc.) while you are studying it. This helps to incorporate good coding style right from the start. There are also exercises in most of the units. The exercises are very well designed to bring out a specific “thing” that Rainer wants you to learn, notice or appreciate. These kind of exercises sticks to your memory and helps further critically analyze and appreciate the language elements.

I have already gained a lot of insight and valuable understanding that helps me everyday when I read my colleagues’ code, do code reviews, implement my own features that too in the embedded world, where there are further restrictions to tackle. I would definitely recommend Rainer’s mentorship program to anyone who wants to tame this difficult, wild language called C++ and truly appreciate how powerful it is.