Quo Vadis – Modernes C++

DONE: I have written almost 100 posts about C++20. Now, I want to ask you: What should be my next big topic? Make your choice in this poll.

 

First of all, here is an overview of my more than 300 posts, including C++20.

Now, let me take about the future of Modernes C++. I have three ideas: C++23, extending and embedding Python with C/C++, and templates. The poll is open for one week, including the 24.04. This means, in my next post I present your favourite and my plan to write about it.

Quo Vadis: Modernes C++

Make your choice:

[sexypolling id=”14″]

Maybe, you don’t know what to choose. Here is more information about each topic.

C++23

C++20 is just the starting point. There is work to be done in C++23 to fully integrate and use the potential of the Big Four in C++. Let me give you a few ideas about the near C++ future.

  • The Standard Template Library was designed by Alexander Stephanov with concepts in mind. Still, the integration of concepts is missing in C++20.
  • We can expect a modularized Standard Template Library and hope for a packaging system in C++.
  • Many algorithms known from functional programming are still missing in the ranges library. A future C++ standard should improve the interplay of the range algorithms and the standard containers.
  • We don’t have coroutines. We only have a framework for building powerful coroutines. A coroutines library will be, with high probability, in C++23.

Ville Voutilainen’s proposal P0592R4 “To boldly suggest an overall plan for C++23” gives a first idea of the upcoming C++23 standard. Ville names seven features.

  • C++23
    • Library support for coroutine
    • A modular standard library
    • Executors
    • Networking
  • C++23 or later
    • Reflection
    • Pattern matching
    • Contracts

Extending and Embedding Python with C/C++

Python is very communicative. On the one hand, it is very easy to call C/C++ functionality from Python (extend), and on the other hand, Python can be used directly from a C/C++ runtime (embed). Extend allows you to offload performance-critical parts of your program to C/C++. Thanks to embedding a Python interpreter in your C/C++ application, the C/C++ application has a scripting interface.

A few days ago, I gave a German presentation at the EnterPy2021 about extending and embedding Python with C/C++. Here is the presentation

Templates

The future of C++ speaks templates. Sadly, most C++ professionals don’t know templates sufficiently well enough. My idea is to provide you with the details about templates. Here is my rough plan:

  • Basics
    • Function templates
    • Class templates
    • Template parameters
    • Template arguments
    • Specialization
  • Details
    • Template Instantiation
    • Variadic Templates
    • Fold Expressions
    • Friends
    • Dependent Names
  • Techniques
    • Automatic return type
    • Template metaprogramming
    • Type traits
    • constexpr
    • constexpr if
  • Design
    • Static versus dynamic polymorphism
    • CRTP (curiously recurring template pattern)
    • Expression templates
    • Idioms and patterns
  • C++20
    • Concepts

Guest Posts

if you want to write an interesting post about C++, I’m happy to publish it on my blogs. This means I publish it on my German and English blogs. You can write it in your mother tongue. I translate it into the another language. You can expect 10.000 – 100.00 readers.

What’s next?

Depending on your choice, I present in my next post a detailed plan about my future posts. 

 

Rainer D 6 P2 500x500Modernes C++ Mentoring

Be part of my mentoring programs:

  • "Fundamentals for C++ Professionals" (open)
  • "Design Patterns and Architectural Patterns with C++" (open)
  • "C++20: Get the Details" (open)
  • "Concurrency with Modern C++" (starts March 2024)
  • Do you want to stay informed: Subscribe.

     

     

     

     

    Thanks a lot to my Patreon Supporters: Matt Braun, Roman Postanciuc, Tobias Zindl, G Prvulovic, Reinhold Dröge, Abernitzke, Frank Grimm, Sakib, Broeserl, António Pina, Sergey Agafyin, Андрей Бурмистров, Jake, GS, Lawton Shoemake, Jozo Leko, John Breland, Venkat Nandam, Jose Francisco, Douglas Tinkham, Kuchlong Kuchlong, Robert Blanch, Truels Wissneth, Kris Kafka, Mario Luoni, Friedrich Huber, lennonli, Pramod Tikare Muralidhara, Peter Ware, Daniel Hufschläger, Alessandro Pezzato, Bob Perry, Satish Vangipuram, Andi Ireland, Richard Ohnemus, Michael Dunsky, Leo Goodstadt, John Wiederhirn, Yacob Cohen-Arazi, Florian Tischler, Robin Furness, Michael Young, Holger Detering, Bernd Mühlhaus, Stephen Kelley, Kyle Dean, Tusar Palauri, Dmitry Farberov, Juan Dent, George Liao, Daniel Ceperley, Jon T Hess, Stephen Totten, Wolfgang Fütterer, Matthias Grün, Phillip Diekmann, Ben Atakora, Ann Shatoff, Rob North, Bhavith C Achar, Marco Parri Empoli, moon, Philipp Lenk, Hobsbawm, and Charles-Jianye Chen.

    Thanks, in particular, to Jon Hess, Lakshman, Christian Wittenhorst, Sherhy Pyton, Dendi Suhubdy, Sudhakar Belagurusamy, Richard Sargeant, Rusty Fleming, John Nebel, Mipko, Alicja Kaminska, Slavko Radman, and David Poole.

    My special thanks to Embarcadero
    My special thanks to PVS-Studio
    My special thanks to Tipi.build 
    My special thanks to Take Up Code
    My special thanks to SHAVEDYAKS

    Seminars

    I’m happy to give online seminars or face-to-face seminars worldwide. Please call me if you have any questions.

    Standard Seminars (English/German)

    Here is a compilation of my standard seminars. These seminars are only meant to give you a first orientation.

    • C++ – The Core Language
    • C++ – The Standard Library
    • C++ – Compact
    • C++11 and C++14
    • Concurrency with Modern C++
    • Design Pattern and Architectural Pattern with C++
    • Embedded Programming with Modern C++
    • Generic Programming (Templates) with C++
    • Clean Code with Modern C++
    • C++20

    Online Seminars (German)

    Contact Me

    Modernes C++ Mentoring,

     

     

    0 replies

    Leave a Reply

    Want to join the discussion?
    Feel free to contribute!

    Leave a Reply

    Your email address will not be published. Required fields are marked *