{"id":7686,"date":"2025-11-28T22:09:22","date_gmt":"2025-11-28T21:09:22","guid":{"rendered":"https:\/\/web-dev-weissblau.de\/microconsult\/?p=7686"},"modified":"2026-02-14T06:42:47","modified_gmt":"2026-02-14T05:42:47","slug":"10-small-things-that-make-c-easier","status":"publish","type":"post","link":"https:\/\/www.microconsult.de\/en\/10-kleine-dinge-die-c-einfacher-machen\/","title":{"rendered":"10 small things that make C++ easier"},"content":{"rendered":"<p>Wartbarer Code durch den Einsatz von modernen C++ Features<\/p>\n<p>Autor: Dominik Berner, bbv Software Services<\/p>\n<h3>Beitrag &#8211; Embedded Software Engineering Kongress 2018<\/h3>\n<p><strong>Die neuen Standards haben die Programmiersprache C++ merklich modernisiert und teilweise ganz neue Programmierparadigmen in die Welt von C++ eingebracht.<\/strong><\/p>\n<p>Die &#8222;gro\u00dfen&#8220; \u00c4nderungen, wie Variadic Templates, auto, Move-Semantik, Lambda-Ausdr\u00fccke und weitere, haben f\u00fcr viel Diskussionsstoff gesorgt und sind dementsprechend weit herum bekannt. Nebst den Sprachfeatures hat auch die Standard-Bibliothek eine merkliche Erweiterung erfahren, und viele Konzepte aus Bibliotheken wie boost wurden so standardisiert. Nebst diesen sehr sp\u00fcrbaren (und teilweise auch umstrittenen) Features gibt es eine ganze Menge an kleinen, aber feinen Spracherweiterungen, die oft weniger bekannt sind oder \u00fcbersehen werden.<\/p>\n<p>Gerade weil diese Features oft sehr klein und teilweise fast unsichtbar sind, haben sie gro\u00dfes Potential, um im Programmiereralltag das Leben einfacher zu machen und Code ohne schwerwiegende Eingriffe sanft zu modernisieren. Es ist oft so, dass man bei der Arbeit mit bestehendem Code nicht die M\u00f6glichkeit hat, gro\u00dfe strukturelle oder von au\u00dfen sichtbare \u00c4nderungen vorzunehmen, aber genau hier k\u00f6nnen die &#8222;kleinen Features&#8220; helfen, Code aktuell und wartbar zu halten.<\/p>\n<h2>Moderner, wartbarer Code<\/h2>\n<p>Wartbarkeit, Lesbarkeit und Code-Qualit\u00e4t sind Themen die aus der heutigen Software-Entwicklung nicht mehr wegzudenken sind. Der Vorteil von Software gegen\u00fcber Hardware ist, das sie sich relativ leicht anpassen und \u00fcberarbeiten l\u00e4sst und insbesondere dort, wo agil gearbeitet wird, geschieht das oft sehr bewusst und immer wieder. Durch diese Volatilit\u00e4t werden gewinnen diese Qualit\u00e4tsmerkmale noch mehr an Gewicht, denn schlechter Code macht den Vorteil der einfachen Bearbeitung mehr als zunichte. Dinge wie Clean Code, das SOLID-Prinzip oder Paradigmen wie Low Coupling, Strong Cohesion sind wichtige Aspekte von Codequalit\u00e4t, aber Qualit\u00e4t beginnt bereits bei der Verwendung der Sprache selbst. Das Verwenden der zur Verf\u00fcgung gestellten Sprachfeatures und -funktionen hilft, die Absicht hinter dem geschriebenen Code zu verdeutlichen, und erleichtert oft auch das automatische Verifizieren dieser Absichten. Zudem kann oft dadurch die Menge von geschriebenem Code reduziert werden, was dem Prinzip von &#8222;Less code means less bugs&#8220; in die H\u00e4nde spielt.<\/p>\n<h2>Ein Beispiel zur Illustration<\/h2>\n<p>Ein einfacher Algorithmus kann sehr kompliziert zu verstehen sein, wenn die Schreibweise nicht den Erwartungen entsprechen oder der Autor sich einen besonders schlauen Hack zur Optimierung einfallen lie\u00df. So kann zum Beispiel das Tauschen von zwei Variablen x und y wie folgt geschrieben werden (s. Abbildung im\u00a0<a title=\"Fachinfo_ESE_c++-einfacher_bbv_berner\" href=\"https:\/\/www.microconsult.de\/wp-content\/uploads\/2025\/11\/fachinfo_ese_c-einfacher_bbv_berner.pdf\" target=\"_blank\" rel=\"noopener\">PDF<\/a>).<\/p>\n<p>Dieser XOR-Swap ist zwar speichereffizient und hat in ganz spezifischen F\u00e4llen seine Daseinsberechtigung, aber intuitiv lesbar ist die Operation nicht. Selbst mit einem Code-Kommentar versehen zwingt dieses einfache Beispiel dem Leser unn\u00f6tige Denkarbeit auf. Dem gegen\u00fcbergestellt liest sich das folgende Beispiel viel einfacher (s. Abbildung im\u00a0<a title=\"Fachinfo_ESE_c++-einfacher_bbv_berner\" href=\"https:\/\/www.microconsult.de\/wp-content\/uploads\/2025\/11\/fachinfo_ese_c-einfacher_bbv_berner.pdf\" target=\"_blank\" rel=\"noopener\">PDF<\/a>).<\/p>\n<p>Die folgenden 10 kleinen Features und Erweiterungen haupts\u00e4chlich aus den modernen C++-Standards helfen, Code kompakt und lesbar zu halten und somit die Code-Qualit\u00e4t zu verbessern.<\/p>\n<h2>Vererbung kontrollieren mit override und final<\/h2>\n<p>Vererbung ist f\u00fcr viele Programmierer Fluch und Segen gleicherma\u00dfen. Einerseits hilft sie oft, Code-Duplizierung zu vermeiden, andererseits gibt es dabei &#8211; insbesondere in C++ &#8211; viele Stolpersteine, die beachtet werden m\u00fcssen. Gerade bei Refactorings an Basisklassen kommt es immer wieder vor, dass die abh\u00e4ngigen Klassen vergessen werden und man dies erst zur Laufzeit merkt. Das Schl\u00fcsselwort override schafft hier seit C++11 Abhilfe. Wann immer eine Funktion in einem Vererbungsbaum \u00fcberschrieben wird, sollte override verwendet werden. Damit wird eine \u00fcberschriebene Funktion automatisch virtuell, und der Compiler erh\u00e4lt die M\u00f6glichkeit zu \u00fcberpr\u00fcfen, ob auch tats\u00e4chlich eine Methode \u00fcberschrieben wird und ob die \u00fcberschriebene Methode auch tats\u00e4chlich virtuell ist. (s. Abbildung im\u00a0<a title=\"Fachinfo_ESE_c++-einfacher_bbv_berner\" href=\"https:\/\/www.microconsult.de\/wp-content\/uploads\/2025\/11\/fachinfo_ese_c-einfacher_bbv_berner.pdf\" target=\"_blank\" rel=\"noopener\">PDF<\/a>)<\/p>\n<p class=\"PreformattedText\">Noch mehr Kontrolle \u00fcber den Vererbungsbaum erh\u00e4lt man, wenn man die Vererbung ab einem gewissen Punkt komplett unterbinden kann. Der Spezifikator final zeigt an, dass eine Klasse oder virtuelle Funktion nicht weiter \u00fcberschrieben werden kann. Dies verringert zwar den Schreibaufwand nicht, aber kommuniziert ganz klar eine Absicht hinter einen St\u00fcck Code, n\u00e4mlich dass keine weitere Vererbung erw\u00fcnscht ist. Hier hilft sogar der Compiler mit indem die Kompilierung fehlschl\u00e4gt, sollte man dies doch versuchen. (s. Abbildung im\u00a0<a title=\"Fachinfo_ESE_c++-einfacher_bbv_berner\" href=\"https:\/\/www.microconsult.de\/wp-content\/uploads\/2025\/11\/fachinfo_ese_c-einfacher_bbv_berner.pdf\" target=\"_blank\" rel=\"noopener\">PDF<\/a>)<\/p>\n<h2>using-Deklarationen und Konstruktorenvererbung<\/h2>\n<p class=\"PreformattedText\">Code zu duplizieren ist dem Programmierer ein Graus, selbst wenn es sich hier um generierten Code handelt. using-Deklarationen erlauben es dem Programmierer, ein Symbol von einer deklarativen Region, wie Namensr\u00e4ume, Klassen und Strukturen in einen anderen zu &#8222;importieren&#8220;, ohne dass zus\u00e4tzlicher Code generiert wird. Bei Klassen ist dies vor allem n\u00fctzlich, um Konstruktoren von Basisklassen direkt zu \u00fcbernehmen, ohne dass alle Varianten neu geschrieben werden m\u00fcssen. Ein weiteres Beispiel ist um kovariante Implementierungen in abgeleiteten Klassen explizit zu gestalten. Damit wird dem Leser klar signalisiert, dass hier eine &#8222;fremde&#8220; Implementation verwendet wird, die keine funktionale Modifikation erfahren hat. (s. Abbildung im\u00a0<a title=\"Fachinfo_ESE_c++-einfacher_bbv_berner\" href=\"https:\/\/www.microconsult.de\/wp-content\/uploads\/2025\/11\/fachinfo_ese_c-einfacher_bbv_berner.pdf\" target=\"_blank\" rel=\"noopener\">PDF<\/a>)<\/p>\n<p>F\u00fcr Klassen und Strukturen funktioniert das schon l\u00e4nger; seit C++17 funktioniert das \u00fcbernehmen von Symbolen auch f\u00fcr (verschachtelte) Namensr\u00e4ume: (s. Abbildung im\u00a0<a title=\"Fachinfo_ESE_c++-einfacher_bbv_berner\" href=\"https:\/\/www.microconsult.de\/wp-content\/uploads\/2025\/11\/fachinfo_ese_c-einfacher_bbv_berner.pdf\" target=\"_blank\" rel=\"noopener\">PDF<\/a>)<\/p>\n<h2>Weiterleiten von Konstruktoren<\/h2>\n<p>Andere High-Level-Programmiersprachen kennen das &#8222;Verketten&#8220; von Konstruktoren schon l\u00e4nger, und seit C++11 ist dies auch in endlich C++ m\u00f6glich. Die Vorteile von weniger dupliziertem Code und damit einfacherer Lesbarkeit und somit bessere Wartbarkeit liegen dabei auf der Hand. Gerade bei Konstruktoren, die intern komplizierte Initialisierungen und\/oder Checks durchf\u00fchren, hilft dies sehr und f\u00f6rdert die Umsetzung des RAII (Resource Allocation is Initialisation) Paradigmas. (s. Abbildung im\u00a0<a title=\"Fachinfo_ESE_c++-einfacher_bbv_berner\" href=\"https:\/\/www.microconsult.de\/wp-content\/uploads\/2025\/11\/fachinfo_ese_c-einfacher_bbv_berner.pdf\" target=\"_blank\" rel=\"noopener\">PDF<\/a>)<\/p>\n<p>Im Zusammenhang mit der Verwendung der oben genannten Konstruktorenvererbung mit using l\u00e4sst sich Code so noch weiter komprimieren. (s. Abbildung im\u00a0<a title=\"Fachinfo_ESE_c++-einfacher_bbv_berner\" href=\"https:\/\/www.microconsult.de\/wp-content\/uploads\/2025\/11\/fachinfo_ese_c-einfacher_bbv_berner.pdf\" target=\"_blank\" rel=\"noopener\">PDF<\/a>)<\/p>\n<h2>= delete &#8211; L\u00f6schen von Funktionen<\/h2>\n<p>Weniger Code hei\u00dft weniger Bugs, auch bei generiertem Code. Also erleichtern wir dem Compiler doch die Arbeit, Code zu generieren, den wir gar nicht wollen und brauchen. Das Keyword delete f\u00fcr Funktionsdeklaration &#8211; nicht zu verwechseln mit dem entsprechenden Ausdruck, um Objekte zu L\u00f6schen &#8211; ist eine weitere sehr starke Erweiterung in C++11, mit der ein Programmierer eine Absicht nicht nur signalisieren, sondern auch vom Compiler durchsetzen lassen kann. Mit der Verwendung von = delete kann explizit sichergestellt werden, das gewisse Operationen, wie zum Beispiel Kopieren eines Objektes, nicht vorgesehen und m\u00f6glich sind. Nat\u00fcrlich sollte die &#8222;Rule of Five&#8220; auch beim L\u00f6schen von Funktionen beachtet werden. (s. Abbildung im\u00a0<a title=\"Fachinfo_ESE_c++-einfacher_bbv_berner\" href=\"https:\/\/www.microconsult.de\/wp-content\/uploads\/2025\/11\/fachinfo_ese_c-einfacher_bbv_berner.pdf\" target=\"_blank\" rel=\"noopener\">PDF<\/a>)<\/p>\n<h2>Garantiertes verhindern von Kopien<\/h2>\n<p>Die garantiere Verhinderung von Kopien (engl. guaranteed copy elision) ist f\u00fcr den Programmierer meist unsichtbar, aber dahinter verbirgt sich gro\u00dfes Potential f\u00fcr kleineren und saubereren Code. Diese Tilgung verhindert, dass unn\u00f6tige Kopien von tempor\u00e4ren Objekten erstellt werden, wenn sie unmittelbar nach dem Erstellen einem neuen Symbol zugewiesen werden. Einige Compiler wie gcc unterst\u00fctzen dies zwar schon l\u00e4nger, aber mit C++17 wurde das Auslassen von Kopien als garantiertes Verhalten in den Standard aufgenommen. Nebst dem Effekt, dass so weniger Code generiert wird, l\u00e4sst sie den Programmierer seine Absicht, dass ein Objekt nicht kopiert oder verschoben werden darf, mit noch gr\u00f6\u00dferer Konsequenz umsetzen. Unter Verwendung des oben genannten = delete l\u00e4sst sich dies sehr deutlich ausdr\u00fccken. (s. Abbildung im\u00a0<a title=\"Fachinfo_ESE_c++-einfacher_bbv_berner\" href=\"https:\/\/www.microconsult.de\/wp-content\/uploads\/2025\/11\/fachinfo_ese_c-einfacher_bbv_berner.pdf\" target=\"_blank\" rel=\"noopener\">PDF<\/a>)<\/p>\n<h2>Structured Bindings<\/h2>\n<p>Klassen und Strukturen sind nicht die einzige M\u00f6glichkeit, um das Handling von Daten zu strukturieren. Die Standardbibliothek stellt zudem eine ganze Menge Datencontainer f\u00fcr genau diese Zwecke zur Verf\u00fcgung. Mit std::tuple und std::array wurden in C++11 zwei Datenstrukturen mit zur Compile-Time bekannter Gr\u00f6\u00dfe eingef\u00fchrt. W\u00e4hrend std::array eine relativ simple Modernisierung von C-Arrays darstellt, wurde mit std::tuple eine generische M\u00f6glichkeit geschaffen, um heterogene Daten bequem im Programm herumzureichen, ohne dass der Programmiere reine Datenklassen oder structs erstellen muss.<\/p>\n<p>Seit C++17 ist der Zugriff auf die Inhalte dieser Datenstrukturen durch die strukturierten Bindings sehr leichtgewichtig m\u00f6glich (s. Abbildung im\u00a0<a title=\"Fachinfo_ESE_c++-einfacher_bbv_berner\" href=\"https:\/\/www.microconsult.de\/wp-content\/uploads\/2025\/11\/fachinfo_ese_c-einfacher_bbv_berner.pdf\" target=\"_blank\" rel=\"noopener\">PDF<\/a>).<\/p>\n<p>Zu beachten ist, dass alle Variablen hier dieselbe const-ness haben und entweder alle als Referenz oder By-Value gelesen werden. Die Structured Bindings funktionieren auch im Zusammenhang mit Klassen, allerdings ist dies etwas problematisch, da die Semantik von Klassenmembers keine starke Reihenfolge der Member vorsieht. Es gibt M\u00f6glichkeiten, diese Semantik zu reimplementieren, allerdings ist dies vergleichsweise aufw\u00e4ndig.<\/p>\n<h2>Stark typisierte Enums<\/h2>\n<p>Einer der wohl am h\u00e4ufigsten verwendeten M\u00f6glichkeiten, f\u00fcr eigene Datentypen mit klaren Wertebereichen zu erstellen, waren schon in C die enums, und auch heute werden sie noch oft und gerne verwendet. Ein oft zitiertes dabei \u00c4rgernis ist, dass die Typensicherheit bei der Verwendung von Enums nur ungen\u00fcgend sichergestellt ist. So war es in der Vergangenheit m\u00f6glich, einen Wert eines Enum-Typs einer Variable eines anderen Enum-Typs zuzuweisen. Mit den neuen Standards geh\u00f6rt dies bei korrekter Verwendung der Vergangenheit an. Wird einer enum Definition das Keyword class oder struct hinzugef\u00fcgt, wird daraus ein stark typisierter Datentyp, und die Verwendung mit einem anderen enum-Typ f\u00fchrt je nach Konfiguration zu einer Warnung oder einem Fehler beim Kompilieren. Sozusagen als zus\u00e4tzlicher Bonus kann seit C++11 auch der unterliegende Datentyp f\u00fcr ein enum explizit angegeben werden, was der Portabilit\u00e4t des Codes zugute kommt. (s. Abbildung im\u00a0<a title=\"Fachinfo_ESE_c++-einfacher_bbv_berner\" href=\"https:\/\/www.microconsult.de\/wp-content\/uploads\/2025\/11\/fachinfo_ese_c-einfacher_bbv_berner.pdf\" target=\"_blank\" rel=\"noopener\">PDF<\/a>)<\/p>\n<h2>Zeit-Literale mit &lt;chrono&gt;<\/h2>\n<p>Eine sehr h\u00e4ufige Verwendung von Daten mit klaren, aber nicht immer linearen Wertebereiten ist insbesondere bei Applikationen mit strikten Zeitanforderungen nat\u00fcrlich die Zeit selbst. Das Handling von Zeiteinheiten ist f\u00fcr viele Programmierer ein Albtraum. Die Gr\u00fcnde sind vielf\u00e4ltig, von der nicht-linearen Aufteilung von Sekunden, Minuten und Stunden bis hin dazu, dass schnell mal Verwirrung entsteht, um welche Zeiteinheit sich bei einem Aufruf wie sleep(100)handelt. Handelt es sich hier um Sekunden? Millisekunden? Mit der Einf\u00fchrung von std::chrono in C++11 und dem Hinzuf\u00fcgen von Zeitliteralen wird das Handling um einiges einfacher. Mit den Literalen k\u00f6nnen Zeitangaben mit einem einfachen Suffix im Code mit einer fixierten Einheit beziehungsweise mit einer fixen Aufl\u00f6sung deklariert werden. &lt;chrono&gt; liefert dabei alles zwischen Mikrosekunden und Stunden. Durch die Verwendung der von std::chrono mitgelieferten Zeiteinheiten lassen sich Zeitwerte bereits zur Compile-Time konvertieren, und das l\u00e4stige manuelle Umrechnen zur Laufzeit geh\u00f6rt der Vergangenheit an. (s. Abbildung im\u00a0<a title=\"Fachinfo_ESE_c++-einfacher_bbv_berner\" href=\"https:\/\/www.microconsult.de\/wp-content\/uploads\/2025\/11\/fachinfo_ese_c-einfacher_bbv_berner.pdf\" target=\"_blank\" rel=\"noopener\">PDF<\/a>)<\/p>\n<h2>Verzweigungen mit Initialisierung<\/h2>\n<p>Auf den ersten Blick ist die Einf\u00fchrung direkten Initialisierung in if- und switch-Statements in C++17 eine M\u00f6glichkeit, Code noch ein kleines bisschen kompakter schreiben. Ein weiterer, etwas versteckter Vorteil ist, dass der Programmierer seine Absicht, dass ein Symbol nur innerhalb einer Verzweigung verwendet wird, deutlicher ausdr\u00fccken kann. Die Initialisierung direkt neben beziehungsweise in der Bedingung zu haben verhindert auch die Gefahr, dass sie bei Refactorings (unabsichtlich) von der Verzweigung getrennt wird. (s. Abbildung im\u00a0<a title=\"Fachinfo_ESE_c++-einfacher_bbv_berner\" href=\"https:\/\/www.microconsult.de\/wp-content\/uploads\/2025\/11\/fachinfo_ese_c-einfacher_bbv_berner.pdf\" target=\"_blank\" rel=\"noopener\">PDF<\/a>)<\/p>\n<p>Im Zusammenhang mit den oben genannten Structured Bindings kann die direkte Initialisierung sehr elegant verwendet werden. Im folgenden Beispiel wird versucht, einen bereits existierenden Wert in einer std::map zu \u00fcberschreiben. Der R\u00fcckgabewert von insert wird direkt in einen Iterator und das Flag, ob die Operation erfolgreich war, entpackt und kann somit direkt innerhalb der Abfrage verwendet werden.<\/p>\n<p>(s. Abbildung im\u00a0<a title=\"Fachinfo_ESE_c++-einfacher_bbv_berner\" href=\"https:\/\/www.microconsult.de\/wp-content\/uploads\/2025\/11\/fachinfo_ese_c-einfacher_bbv_berner.pdf\" target=\"_blank\" rel=\"noopener\">PDF<\/a>)<\/p>\n<h2 class=\"PreformattedText\">Standardattribute<\/h2>\n<p>Wann immer ein Programmierer eine Annahme trifft, sollte dies im Code dokumentiert sein. Mit den Standardattributen k\u00f6nnen einige solcher Annahmen mit wenig Aufwand dokumentiert werden. Attribute sind seit l\u00e4ngerem f\u00fcr verschiedene Compiler bekannt, allerdings war die Notation f\u00fcr die verschiedenen Compiler oft unterschiedlich. Seit C++17 wurde diese als [[ attribute ]] standardisiert, was den Code lesbarer macht. Zudem wurden verschiedene, von allen Compilern unterst\u00fctzte Standardattribute eingef\u00fcgt, welche es dem Programmierer erlauben, seine Absichten f\u00fcr gewisse Konstrukte explizit zu formulieren:<\/p>\n<ul>\n<li>[[noreturn]]<br \/>\nZeigt an, dass eine Funktion nicht zur\u00fcckkehrt, z.B. weil sie immer eine Exception wirft<\/li>\n<li>[[deprecated]]\u00a0 \/ \u00a0[[deprecated(&#8222;reason&#8220;)]]<br \/>\nZeigt an, dass die Verwendung dieser Klasse, Funktion oder Variable zwar erlaubt, aber nicht mehr empfohlen ist<\/li>\n<li>[[fallthrough]]<br \/>\nVerwendet in switch-Statement, um anzuzeigen, dass ein case:-block mit Absicht kein break beinhaltet<\/li>\n<li>[[nodiscard]]<br \/>\nProduziert eine Compiler-Warnung, falls ein so markierter R\u00fcckgabewert nicht verwendet wird<\/li>\n<li>[[maybe_unused]]<br \/>\nUnterdr\u00fcckt Compiler-Warnungen bei nicht verwendeten Variablen. z.B. in Debug-Code &lt;<\/li>\n<\/ul>\n<h2>Fazit<\/h2>\n<p>Diese 10 kleinen Features und Funktionen sind nat\u00fcrlich nur ein kleiner Teil davon, was modernes C++ ausmacht. Aber durch deren konsequente Anwendung kann Code mit relativ wenig Aufwand lesbarer und einfacher Verst\u00e4ndlich gemacht werden, ohne dass die komplette Struktur einer existierenden Codebase gleich umgeschrieben werden muss.<\/p>\n<h2>Zusammenfassung<\/h2>\n<p>Die Einf\u00fchrung der neuen Standards C++11\/14\/17 hat C++ merklich modernisiert. Nebst solchen gro\u00dfen Sprachfeatures wie smart-pointers, move semantics und varaidic templates gibt es auch noch eine ganze Menge an kleineren Erweiterungen, die oftmals unter dem Radar fliegen. Aber gerade diese Features k\u00f6nnen helfen, C++ Code merklich zu vereinfachen und wartbarer zu machen. Dies gekoppelt mit neuen Features in der STL kann helfen, viele kleine Fehlerchen schon beim Schreiben des Codes zu verhindern. Dass der Code sich dabei auch noch leichter liest und stabiler wird, sind weitere erfreuliche Nebeneffekte.<\/p>\n<h2>Autor<\/h2>\n<p>Dominik Berner ist ein Senior Software-Ingenieur bei der bbv Software Services AG mit einer Leidenschaft f\u00fcr modernes C++. Die Wartbarkeit von Code ist f\u00fcr ihn kein Nebeneffekt, sondern ein prim\u00e4res Qualit\u00e4tsmerkmal, das f\u00fcr die Entwicklung von langlebiger Software unabdingbar ist. Als Blogger und Speaker auf Konferenzen und Meetups wei\u00df er, wie Inhalte zu verpacken sind, damit f\u00fcr das Publikum ein Mehrwert entsteht.<\/p>\n<p><a title=\"Fachinfo_ESE_c++-einfacher_bbv_berner\" href=\"https:\/\/www.microconsult.de\/wp-content\/uploads\/2025\/11\/fachinfo_ese_c-einfacher_bbv_berner.pdf\" target=\"_blank\" rel=\"noopener\"><strong>Beitrag als PDF downloaden<\/strong><\/a><\/p>\n<hr \/>\n<h2>Implementierung &#8211; unsere Trainings &amp; Coachings<\/h2>\n<p><strong>Wollen Sie sich auf den aktuellen Stand der Technik bringen?<\/strong><\/p>\n<p>Dann informieren Sie sich\u00a0<a title=\"MicroConsult Training\" href=\"https:\/\/www.microconsult.de\/training-beratung\/\" target=\"_blank\" rel=\"noopener\"><strong>hier<\/strong>\u00a0<\/a>zu Schulungen\/ Seminaren\/ Trainings\/ Workshops und individuellen Coachings von MircoConsult zum Thema Implementierung \/Embedded- und Echtzeit-Softwareentwicklung.<\/p>\n<p><strong>Training &amp; Coaching zu den weiteren Themen unseren Portfolios finden Sie\u00a0<a title=\"Training &amp; Beratung - alle Themen\" href=\"https:\/\/www.microconsult.de\/training-beratung\/\" target=\"_blank\" rel=\"noopener\">hier<\/a>.<\/strong><\/p>\n<hr \/>\n<h2>Implementierung &#8211; Fachwissen<\/h2>\n<p>Wertvolles Fachwissen zum Thema Implementierung\/\u00a0Embedded- und Echtzeit-Softwareentwicklung steht\u00a0<a title=\"Embedded- und Echtzeit-Softwareentwicklung\" href=\"https:\/\/www.microconsult.de\/embedded-und-echtzeit-softwareentwicklung\/\" target=\"_blank\" rel=\"noopener\"><strong>hier\u00a0<\/strong><\/a>f\u00fcr Sie zum kostenfreien Download bereit.<\/p>\n<p><a title=\"Embedded- und Echtzeit-Softwareentwicklung\" href=\"https:\/\/www.microconsult.de\/embedded-und-echtzeit-softwareentwicklung\/\" target=\"_blank\" rel=\"noopener\"><strong>Zu den Fachinformationen<\/strong><\/a><\/p>\n<p><strong>Fachwissen zu weiteren Themen unseren Portfolios finden Sie <a title=\"MicroConsult Fachwissen\" href=\"https:\/\/www.microconsult.de\/fachwissen\/\" target=\"_blank\" rel=\"noopener\">hier<\/a>.<\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Wartbarer Code durch den Einsatz von modernen C++ Features Autor: Dominik Berner, bbv Software Services Beitrag &#8211; Embedded Software Engineering Kongress 2018 Die neuen Standards haben die Programmiersprache C++ merklich modernisiert und teilweise ganz neue Programmierparadigmen in die Welt von C++ eingebracht. Die &#8222;gro\u00dfen&#8220; \u00c4nderungen, wie Variadic Templates, auto, Move-Semantik, Lambda-Ausdr\u00fccke und weitere, haben f\u00fcr [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_et_pb_use_builder":"","_et_pb_old_content":"","_et_gb_content_width":"","inline_featured_image":false,"footnotes":""},"categories":[],"tags":[],"class_list":["post-7686","post","type-post","status-publish","format-standard","hentry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.9 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>10 kleine Dinge, die C++ einfacher machen - MicroConsult Academy GmbH<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.microconsult.de\/en\/10-small-things-that-make-c-easier\/\" \/>\n<meta property=\"og:locale\" content=\"en_GB\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"10 kleine Dinge, die C++ einfacher machen - MicroConsult Academy GmbH\" \/>\n<meta property=\"og:description\" content=\"Wartbarer Code durch den Einsatz von modernen C++ Features Autor: Dominik Berner, bbv Software Services Beitrag &#8211; Embedded Software Engineering Kongress 2018 Die neuen Standards haben die Programmiersprache C++ merklich modernisiert und teilweise ganz neue Programmierparadigmen in die Welt von C++ eingebracht. Die &#8222;gro\u00dfen&#8220; \u00c4nderungen, wie Variadic Templates, auto, Move-Semantik, Lambda-Ausdr\u00fccke und weitere, haben f\u00fcr [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.microconsult.de\/en\/10-small-things-that-make-c-easier\/\" \/>\n<meta property=\"og:site_name\" content=\"MicroConsult Academy GmbH\" \/>\n<meta property=\"article:published_time\" content=\"2025-11-28T21:09:22+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-02-14T05:42:47+00:00\" \/>\n<meta name=\"author\" content=\"weissblau media\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"weissblau media\" \/>\n\t<meta name=\"twitter:label2\" content=\"Estimated reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"12 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/10-kleine-dinge-die-c-einfacher-machen\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/10-kleine-dinge-die-c-einfacher-machen\\\/\"},\"author\":{\"name\":\"weissblau media\",\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/#\\\/schema\\\/person\\\/b6d4c4ae959b068fbe8d9416ed019a0a\"},\"headline\":\"10 kleine Dinge, die C++ einfacher machen\",\"datePublished\":\"2025-11-28T21:09:22+00:00\",\"dateModified\":\"2026-02-14T05:42:47+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/10-kleine-dinge-die-c-einfacher-machen\\\/\"},\"wordCount\":2276,\"commentCount\":0,\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.microconsult.de\\\/10-kleine-dinge-die-c-einfacher-machen\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/10-kleine-dinge-die-c-einfacher-machen\\\/\",\"url\":\"https:\\\/\\\/www.microconsult.de\\\/10-kleine-dinge-die-c-einfacher-machen\\\/\",\"name\":\"10 kleine Dinge, die C++ einfacher machen - MicroConsult Academy GmbH\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/#website\"},\"datePublished\":\"2025-11-28T21:09:22+00:00\",\"dateModified\":\"2026-02-14T05:42:47+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/#\\\/schema\\\/person\\\/b6d4c4ae959b068fbe8d9416ed019a0a\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/10-kleine-dinge-die-c-einfacher-machen\\\/#breadcrumb\"},\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.microconsult.de\\\/10-kleine-dinge-die-c-einfacher-machen\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/10-kleine-dinge-die-c-einfacher-machen\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.microconsult.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"10 kleine Dinge, die C++ einfacher machen\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/#website\",\"url\":\"https:\\\/\\\/www.microconsult.de\\\/\",\"name\":\"MicroConsult Academy GmbH\",\"description\":\"Professionelle Schulungen, Beratung und Projektunterst\u00fctzung\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.microconsult.de\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-GB\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/#\\\/schema\\\/person\\\/b6d4c4ae959b068fbe8d9416ed019a0a\",\"name\":\"weissblau media\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/bbb409da4970da9446f6c49465d453cb8a0dae301e4d4f465b5c4e62408daa2e?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/bbb409da4970da9446f6c49465d453cb8a0dae301e4d4f465b5c4e62408daa2e?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/bbb409da4970da9446f6c49465d453cb8a0dae301e4d4f465b5c4e62408daa2e?s=96&d=mm&r=g\",\"caption\":\"weissblau media\"},\"sameAs\":[\"https:\\\/\\\/www.microconsult.de\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"10 small things that make C++ easier - MicroConsult Academy GmbH","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.microconsult.de\/en\/10-small-things-that-make-c-easier\/","og_locale":"en_GB","og_type":"article","og_title":"10 kleine Dinge, die C++ einfacher machen - MicroConsult Academy GmbH","og_description":"Wartbarer Code durch den Einsatz von modernen C++ Features Autor: Dominik Berner, bbv Software Services Beitrag &#8211; Embedded Software Engineering Kongress 2018 Die neuen Standards haben die Programmiersprache C++ merklich modernisiert und teilweise ganz neue Programmierparadigmen in die Welt von C++ eingebracht. Die &#8222;gro\u00dfen&#8220; \u00c4nderungen, wie Variadic Templates, auto, Move-Semantik, Lambda-Ausdr\u00fccke und weitere, haben f\u00fcr [&hellip;]","og_url":"https:\/\/www.microconsult.de\/en\/10-small-things-that-make-c-easier\/","og_site_name":"MicroConsult Academy GmbH","article_published_time":"2025-11-28T21:09:22+00:00","article_modified_time":"2026-02-14T05:42:47+00:00","author":"weissblau media","twitter_card":"summary_large_image","twitter_misc":{"Written by":"weissblau media","Estimated reading time":"12 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.microconsult.de\/10-kleine-dinge-die-c-einfacher-machen\/#article","isPartOf":{"@id":"https:\/\/www.microconsult.de\/10-kleine-dinge-die-c-einfacher-machen\/"},"author":{"name":"weissblau media","@id":"https:\/\/www.microconsult.de\/#\/schema\/person\/b6d4c4ae959b068fbe8d9416ed019a0a"},"headline":"10 kleine Dinge, die C++ einfacher machen","datePublished":"2025-11-28T21:09:22+00:00","dateModified":"2026-02-14T05:42:47+00:00","mainEntityOfPage":{"@id":"https:\/\/www.microconsult.de\/10-kleine-dinge-die-c-einfacher-machen\/"},"wordCount":2276,"commentCount":0,"inLanguage":"en-GB","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.microconsult.de\/10-kleine-dinge-die-c-einfacher-machen\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.microconsult.de\/10-kleine-dinge-die-c-einfacher-machen\/","url":"https:\/\/www.microconsult.de\/10-kleine-dinge-die-c-einfacher-machen\/","name":"10 small things that make C++ easier - MicroConsult Academy GmbH","isPartOf":{"@id":"https:\/\/www.microconsult.de\/#website"},"datePublished":"2025-11-28T21:09:22+00:00","dateModified":"2026-02-14T05:42:47+00:00","author":{"@id":"https:\/\/www.microconsult.de\/#\/schema\/person\/b6d4c4ae959b068fbe8d9416ed019a0a"},"breadcrumb":{"@id":"https:\/\/www.microconsult.de\/10-kleine-dinge-die-c-einfacher-machen\/#breadcrumb"},"inLanguage":"en-GB","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.microconsult.de\/10-kleine-dinge-die-c-einfacher-machen\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.microconsult.de\/10-kleine-dinge-die-c-einfacher-machen\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.microconsult.de\/"},{"@type":"ListItem","position":2,"name":"10 kleine Dinge, die C++ einfacher machen"}]},{"@type":"WebSite","@id":"https:\/\/www.microconsult.de\/#website","url":"https:\/\/www.microconsult.de\/","name":"MicroConsult Academy GmbH","description":"Professional training, consulting and project support","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.microconsult.de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-GB"},{"@type":"Person","@id":"https:\/\/www.microconsult.de\/#\/schema\/person\/b6d4c4ae959b068fbe8d9416ed019a0a","name":"weissblau media","image":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/secure.gravatar.com\/avatar\/bbb409da4970da9446f6c49465d453cb8a0dae301e4d4f465b5c4e62408daa2e?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/bbb409da4970da9446f6c49465d453cb8a0dae301e4d4f465b5c4e62408daa2e?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/bbb409da4970da9446f6c49465d453cb8a0dae301e4d4f465b5c4e62408daa2e?s=96&d=mm&r=g","caption":"weissblau media"},"sameAs":["https:\/\/www.microconsult.de"]}]}},"post_mailing_queue_ids":[],"_links":{"self":[{"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/posts\/7686","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/comments?post=7686"}],"version-history":[{"count":5,"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/posts\/7686\/revisions"}],"predecessor-version":[{"id":11824,"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/posts\/7686\/revisions\/11824"}],"wp:attachment":[{"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/media?parent=7686"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/categories?post=7686"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/tags?post=7686"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}