{"id":6117,"date":"2021-04-16T10:12:22","date_gmt":"2021-04-16T10:12:22","guid":{"rendered":"https:\/\/www.modernescpp.com\/index.php\/quo-vadids-modernes-c\/"},"modified":"2021-04-16T10:12:22","modified_gmt":"2021-04-16T10:12:22","slug":"quo-vadids-modernes-c","status":"publish","type":"post","link":"https:\/\/www.modernescpp.com\/index.php\/quo-vadids-modernes-c\/","title":{"rendered":"Quo Vadis &#8211; Modernes C++"},"content":{"rendered":"<p>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.<\/p>\n<p><!--more--><\/p>\n<p>&nbsp;<\/p>\n<p>First of all, here is an overview of my more than 300 <a href=\"https:\/\/www.modernescpp.com\/index.php\/der-einstieg-in-modernes-c\">posts<\/a>, including<a href=\"https:\/\/www.modernescpp.com\/index.php\/der-einstieg-in-modernes-c#h7-c-20\"> C++20<\/a>.<\/p>\n<p>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.<\/p>\n<h2>Quo Vadis: Modernes C++<\/h2>\n<p><strong>Make your choice:<br \/><\/strong><\/p>\n<p>[sexypolling id=&#8221;14&#8243;]<\/p>\n<p>Maybe, you don&#8217;t know what to choose. Here is more information about each topic.<\/p>\n<h3>C++23<\/h3>\n<p>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.<\/p>\n<ul>\n<li>The Standard Template Library was designed by<a href=\"https:\/\/en.wikipedia.org\/wiki\/Alexander_Stepanov\"> Alexander Stephanov<\/a> with concepts in mind. Still, the integration of concepts is missing in C++20.<\/li>\n<li>We can expect a modularized Standard Template Library and hope for a packaging system in C++.<\/li>\n<li>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.<\/li>\n<li>We don\u2019t have coroutines. We only have a framework for building powerful coroutines. A coroutines library will be, with high probability, in C++23.<\/li>\n<\/ul>\n<p>Ville Voutilainen\u2019s proposal<a href=\"http:\/\/www.open-std.org\/jtc1\/sc22\/wg21\/docs\/papers\/2019\/p0592r4.html\"> P0592R4<\/a> \u201cTo boldly suggest an overall plan for C++23\u201d gives a first idea of the upcoming C++23 standard. Ville names seven features.<\/p>\n<ul>\n<li>C++23\n<ul>\n<li>Library support for coroutine<\/li>\n<li>A modular standard library<\/li>\n<li>Executors<\/li>\n<li>Networking<\/li>\n<\/ul>\n<\/li>\n<li>C++23 or later\n<ul>\n<li>Reflection<\/li>\n<li>Pattern matching<\/li>\n<li>Contracts<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h3>Extending and Embedding Python with C\/C++<\/h3>\n<p>Python is very communicative. On the one hand, it is very easy to call C\/C++ functionality from Python (<strong>extend<\/strong>), and on the other hand, Python can be used directly from a C\/C++ runtime (<strong>embed<\/strong>). 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.<\/p>\n<p>A few days ago, I gave a German presentation at the EnterPy2021 about extending and embedding Python with C\/C++. Here is the<a href=\"https:\/\/www.grimm-jaud.de\/images\/stories\/pdfs\/ExtendEmbed.pdf\"> presentation<\/a>.&nbsp;<\/p>\n<h3>Templates<\/h3>\n<p>The future of C++ speaks templates. Sadly, most C++ professionals don&#8217;t know templates sufficiently well enough. My idea is to provide you with the details about templates. Here is my rough plan:<\/p>\n<ul>\n<li>Basics\n<ul>\n<li>Function templates<\/li>\n<li>Class templates<\/li>\n<li>Template parameters<\/li>\n<li>Template arguments<\/li>\n<li>Specialization<\/li>\n<\/ul>\n<\/li>\n<li>Details\n<ul>\n<li>Template Instantiation<\/li>\n<li>Variadic Templates<\/li>\n<li>Fold Expressions<\/li>\n<li>Friends<\/li>\n<li>Dependent Names<\/li>\n<\/ul>\n<\/li>\n<li>Techniques\n<ul>\n<li>Automatic return type<\/li>\n<li>Template metaprogramming<\/li>\n<li>Type traits<\/li>\n<li>constexpr<\/li>\n<li>constexpr if<\/li>\n<\/ul>\n<\/li>\n<li>Design\n<ul>\n<li>Static versus dynamic polymorphism<\/li>\n<li>CRTP (curiously recurring template pattern)<\/li>\n<li>Expression templates<\/li>\n<li>Idioms and patterns<\/li>\n<\/ul>\n<\/li>\n<li>C++20\n<ul>\n<li>Concepts<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h2>Guest Posts<\/h2>\n<p>if you want to write an interesting post about C++, I&#8217;m happy to publish it on my blogs. This means I publish it on my <a href=\"https:\/\/www.grimm-jaud.de\/index.php\/blog\">German <\/a>and <a href=\"https:\/\/www.modernescpp.com\/\">English <\/a>blogs. You can write it in your mother tongue. I translate it into the another language. You can expect 10.000 &#8211; 100.00 readers.<\/p>\n<h2>What&#8217;s next?<\/h2>\n<p>Depending on your choice, I present in my<a href=\"https:\/\/www.modernescpp.com\/index.php\/template-get-insight\"> next post <\/a>a detailed plan about my future posts.&nbsp;<\/p>\n<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>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.<\/p>\n","protected":false},"author":21,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[360],"tags":[],"class_list":["post-6117","post","type-post","status-publish","format-standard","hentry","category-news"],"_links":{"self":[{"href":"https:\/\/www.modernescpp.com\/index.php\/wp-json\/wp\/v2\/posts\/6117","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.modernescpp.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.modernescpp.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.modernescpp.com\/index.php\/wp-json\/wp\/v2\/users\/21"}],"replies":[{"embeddable":true,"href":"https:\/\/www.modernescpp.com\/index.php\/wp-json\/wp\/v2\/comments?post=6117"}],"version-history":[{"count":0,"href":"https:\/\/www.modernescpp.com\/index.php\/wp-json\/wp\/v2\/posts\/6117\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.modernescpp.com\/index.php\/wp-json\/wp\/v2\/media?parent=6117"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.modernescpp.com\/index.php\/wp-json\/wp\/v2\/categories?post=6117"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.modernescpp.com\/index.php\/wp-json\/wp\/v2\/tags?post=6117"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}