{"id":7683,"date":"2025-11-28T22:11:23","date_gmt":"2025-11-28T21:11:23","guid":{"rendered":"https:\/\/web-dev-weissblau.de\/microconsult\/?p=7683"},"modified":"2026-02-14T06:50:47","modified_gmt":"2026-02-14T05:50:47","slug":"c-type-safe","status":"publish","type":"post","link":"https:\/\/www.microconsult.de\/en\/c-typsicher\/","title":{"rendered":"C++: Type-safe"},"content":{"rendered":"<h2>Fehler zur Compile-Zeit finden und Tippfehler reduzieren<\/h2>\n<p>Autor: Andreas Fertig<\/p>\n<h3>Beitrag &#8211; Embedded Software Engineering Kongress 2018<\/h3>\n<p><strong>Templates existieren in C++ bereits seit einiger Zeit. Mit dem C++11 Standard-Update wurden sie noch besser. Nun gibt es\u00a0 variadische Template-Argumente. Einige Leute argumentieren, dass dies das wichtigste neue Feature in C++11 ist. Templates sind eine gute M\u00f6glichkeit, den Compiler-Code f\u00fcr Sie erstellen zu lassen. Da Templates zur Kompilierzeit ausgewertet werden, sind sie auch perfekt f\u00fcr eine fr\u00fchestm\u00f6gliche Fehlererkennung. Sie k\u00f6nnen robusteren Code mit ihnen schreiben. Mit Templates k\u00f6nnen Sie Berechnungen bereits zur Kompilierzeit durchf\u00fchren. Zusammen mit constexpr sind sie ein sehr leistungsf\u00e4higes Werkzeug, das jeder in seiner Werkzeugkiste haben sollte.<\/strong><\/p>\n<p>C++ verf\u00fcgt \u00fcber ein sehr starkes Typsystem. Zugegeben, es wird oft unterwandert oder ignoriert. In vielen Bereichen, in denen C++ eingesetzt wird, spielt jedoch gerade diese Typsicherheit eine entscheidende Rolle. Es geht darum, bereits zur Compile-Zeit zu erkennen, dass z. B. eine Zuweisung invalide ist oder ein Parameter nicht zu einem Funktionsaufruf passt.<\/p>\n<p>&#8222;Type safety means that\u00a0<em>the compiler will validate types while compiling, and throw an error if you try to\u00a0 assign the wrong type to a variable<\/em>.&#8220; [1]<\/p>\n<p>Ein Beispiel f\u00fcr eine typunsichere Funktion ist dieses Beispiel:<\/p>\n<p class=\"quellcode\">void Foo(bool first, bool addNewLine);<\/p>\n<p class=\"quellcode\">void UseFoo(bool first, bool addNewLine)<\/p>\n<p class=\"quellcode\">{<\/p>\n<p class=\"quellcode\">\u00a0 Foo(addNewLine, first);<\/p>\n<p class=\"quellcode\">}<\/p>\n<p class=\"quellcode\">void Main()<\/p>\n<p class=\"quellcode\">{<\/p>\n<p class=\"quellcode\">\u00a0 UseFoo(true, false);<\/p>\n<p class=\"quellcode\">}<\/p>\n<p>Zun\u00e4chst ist es schwer zu sagen, was die beiden Parameter bewirken, wenn wir lediglich den Aufruf UseFoo(true, false) betrachten. Inspizieren wir die Implementierung n\u00e4her,\u00a0 k\u00f6nnen wir erkennen, dass innerhalb von UseFoo die beiden Parameter first und addNewLine vertauscht wurden. Ob das korrekt ist oder nicht, ist auch an dieser Stelle schwer zu sagen. Erst die Parameternamen in der Implementierung von Foo deuten an, dass hier ein Fehler vorliegt und die Parameter tats\u00e4chlich vertauscht wurden. F\u00fcr den Compiler gibt es hier absolut keinen Grund, eine Warnung zu generieren. Beide Parameter sind vom Typ bool, also alles bestens. Die Auswirkung auf unser Programm kann jedoch katastrophal sein. Das schlimmste ist, wir sehen die Auswirkung erst durch das Ausf\u00fchren des Programms. Damit bestimmt die G\u00fcte unseres Testings, ob der Fehler noch in der Produktion oder erst beim Kunden gefunden wird.<\/p>\n<p>Mit lediglich einem kleinen Trick k\u00f6nnen wir f\u00fcr mehr Sicherheit sorgen und diese Art von Fehler bereits zur Compile-Zeit finden. Also v\u00f6llig unabh\u00e4ngig von unserem Testing:<\/p>\n<p class=\"quellcode\">#define STRONG_BOOL(typeName)\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \\<\/p>\n<p class=\"quellcode\">\u00a0 enum class typeName : bool\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \\<\/p>\n<p class=\"quellcode\">\u00a0 {\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \\<\/p>\n<p class=\"quellcode\">\u00a0\u00a0\u00a0 No\u00a0 = false,\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \\<\/p>\n<p class=\"quellcode\">\u00a0\u00a0\u00a0 Yes = true\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \\<\/p>\n<p class=\"quellcode\">\u00a0 }<\/p>\n<p class=\"quellcode\">STRONG_BOOL(First);<\/p>\n<p class=\"quellcode\">STRONG_BOOL(AddNewLine);<\/p>\n<p class=\"quellcode\">void Foo(First first, AddNewLine addNewLine);<\/p>\n<p class=\"quellcode\">void UseFoo(First first, AddNewLine addNewLine)<\/p>\n<p class=\"quellcode\">{<\/p>\n<p class=\"quellcode\">\u00a0 \/\/ Foo(addNewLine, first);<\/p>\n<p class=\"quellcode\">\u00a0 Foo(first, addNewLine);<\/p>\n<p class=\"quellcode\">}<\/p>\n<p class=\"quellcode\">void Main()<\/p>\n<p class=\"quellcode\">{<\/p>\n<p class=\"quellcode\">\u00a0 UseFoo(First::Yes, AddNewLine::No);<\/p>\n<p class=\"quellcode\">}<\/p>\n<p>&nbsp;<\/p>\n<p>Wir erstellen uns einen Klassen-Enum, der zwei Werte enth\u00e4lt: Yes und No. Das Makro dient dazu, einfach einen solchen Klassen-Enum erstellen zu k\u00f6nnen. Als Beispiel sehen wir First und AddNewLine. Diese beiden neuen Typen nutzen wir anschlie\u00dfend in der Funktionssignatur von Foo und UseFoo. Damit ist ein Vertauschen der Parameter nicht mehr m\u00f6glich. Der Compiler wird mit einem harten Fehler den Compile-Vorgang abbrechen. Als weiteres Plus ist der Aufruf von UseFoo viel klarer. Jetzt ist direkt zu erkennen, wof\u00fcr die beiden Parameter stehen.<\/p>\n<p>Templates k\u00f6nnen sehr hilfreich sein, wenn es um Typsicherheit geht. Schauen wir uns dazu folgendes Beispiel an:<\/p>\n<p>&nbsp;<\/p>\n<p class=\"quellcode\">int16_t max(int16_t a, int16_t b)<\/p>\n<p class=\"quellcode\">{<\/p>\n<p class=\"quellcode\">\u00a0\u00a0\u00a0 return (a &gt; b) ? a : b;<\/p>\n<p class=\"quellcode\">}<\/p>\n<p class=\"quellcode\">int main()<\/p>\n<p class=\"quellcode\">{<\/p>\n<p class=\"quellcode\">\u00a0\u00a0\u00a0 int16_t\u00a0 a = 1;<\/p>\n<p class=\"quellcode\">\u00a0\u00a0\u00a0 uint16_t b = 65530;<\/p>\n<p class=\"quellcode\">\u00a0\u00a0\u00a0 printf(&#8222;max: %d &#8222;, max(a, b));<\/p>\n<p class=\"quellcode\">}<\/p>\n<p>Hier sehen wir eine Implementierung der max-Funktion. Diese arbeitet mit 16-Bit vorzeichenbehafteten Integern. Im printf-Aufruf \u00fcbergeben wir die beiden Parameter a und b. Das Programm ist klein und \u00fcbersichtlich. Wir erkennen unschwer, dass wir an dieser Stelle einen vorzeichenlosen Wert mit dem Parameter b \u00fcbergeben. Macht nichts, es compiliert und linked. Was aber ist das Ergebnis? Wir erwarten 65530, korrekt? Die Ausgabe von printf wird uns mit 1 vermutlich erstaunen. Hier kommen die Integer-Konvertierungsregeln zu tragen und aus dem unsigned wird ein sehr kleiner signed.<\/p>\n<p>Templates k\u00f6nnen hier von entscheidender Hilfe sein. Schauen wir uns dazu das leicht modifizierte Programm an:<\/p>\n<p class=\"quellcode\">template&lt;typename T&gt;<\/p>\n<p class=\"quellcode\">T max(T_t a, T_t b)<\/p>\n<p class=\"quellcode\">{<\/p>\n<p class=\"quellcode\">\u00a0\u00a0\u00a0 return (a &gt; b) ? a : b;<\/p>\n<p class=\"quellcode\">}<\/p>\n<p class=\"quellcode\">int main()<\/p>\n<p class=\"quellcode\">{<\/p>\n<p class=\"quellcode\">\u00a0\u00a0\u00a0 int16_t\u00a0 a = 1;<\/p>\n<p class=\"quellcode\">\u00a0\u00a0\u00a0 uint16_t b = 65530;<\/p>\n<p class=\"quellcode\">\u00a0\u00a0\u00a0 printf(&#8222;max: %d &#8222;, max(a, b));<\/p>\n<p class=\"quellcode\">}<\/p>\n<p>Die max-Funktion wurde lediglich durch den Einsatz eines Templates generalisiert. Der Effekt, den wir durch das Template erhalten, ist, dass dieses Programm mit einem Compile-Fehler endet. Templates sind typsicher und die Signatur des Templates erfordert zwei Parameter vom gleichen Typ. Hier kommen keine Konvertierungsregeln zum Einsatz. Denn beide Typen m\u00fcssen direkt passen. Zu beachten ist, dass Flie\u00dfkommazahlen hier gegf. gesondert zu betrachten sind.<\/p>\n<p>Templates sind ein einfaches Mittel, um die Typsicherheit von C++ weiter zu erh\u00f6hen und Fehler bereits zur Compile-Zeit zu erkennen.<\/p>\n<h2>Literatur- und Quellenverzeichnis<\/h2>\n<p class=\"Bibliography1\">[1]\u00a0 Razin, &#8222;What is type-safe?&#8220;. https:\/\/stackoverflow.com\/questions\/260626\/what-is-type-safe<\/p>\n<h2>Autor<\/h2>\n<p>Andreas Fertig studierte Informatik in Karlsruhe. Bereits seit seinem Studium befasst er sich mit eingebetteten Systemen und den damit einher gehenden Anforderungen und Besonderheiten. Seit 2010 ist er f\u00fcr die Philips Medizin Systeme als Softwareentwickler mit dem Schwerpunkt eingebettete Systeme t\u00e4tig. Er verf\u00fcgt \u00fcber fundierte Kenntnisse von C++.\u00a0 Freiberuflich arbeitet er als Dozent und Trainer. Zudem entwickelt er Mac OS X-Anwendungen und ist der Autor von cppinsights.io.<\/p>\n<p><a title=\"Fachinfo_ESE_c++typsicher_fertig\" href=\"https:\/\/www.microconsult.de\/wp-content\/uploads\/2025\/11\/fachinfo_ese_ctypsicher_fertig.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\/alle-trainings-termine-komplettuebersicht\/\" 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>Fehler zur Compile-Zeit finden und Tippfehler reduzieren Autor: Andreas Fertig Beitrag &#8211; Embedded Software Engineering Kongress 2018 Templates existieren in C++ bereits seit einiger Zeit. Mit dem C++11 Standard-Update wurden sie noch besser. Nun gibt es\u00a0 variadische Template-Argumente. Einige Leute argumentieren, dass dies das wichtigste neue Feature in C++11 ist. Templates sind eine gute M\u00f6glichkeit, [&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-7683","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>C++: Typsicher - 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\/c-type-safe\/\" \/>\n<meta property=\"og:locale\" content=\"en_GB\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"C++: Typsicher - MicroConsult Academy GmbH\" \/>\n<meta property=\"og:description\" content=\"Fehler zur Compile-Zeit finden und Tippfehler reduzieren Autor: Andreas Fertig Beitrag &#8211; Embedded Software Engineering Kongress 2018 Templates existieren in C++ bereits seit einiger Zeit. Mit dem C++11 Standard-Update wurden sie noch besser. Nun gibt es\u00a0 variadische Template-Argumente. Einige Leute argumentieren, dass dies das wichtigste neue Feature in C++11 ist. Templates sind eine gute M\u00f6glichkeit, [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.microconsult.de\/en\/c-type-safe\/\" \/>\n<meta property=\"og:site_name\" content=\"MicroConsult Academy GmbH\" \/>\n<meta property=\"article:published_time\" content=\"2025-11-28T21:11:23+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-02-14T05:50: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=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/c-typsicher\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/c-typsicher\\\/\"},\"author\":{\"name\":\"weissblau media\",\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/#\\\/schema\\\/person\\\/b6d4c4ae959b068fbe8d9416ed019a0a\"},\"headline\":\"C++: Typsicher\",\"datePublished\":\"2025-11-28T21:11:23+00:00\",\"dateModified\":\"2026-02-14T05:50:47+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/c-typsicher\\\/\"},\"wordCount\":970,\"commentCount\":0,\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.microconsult.de\\\/c-typsicher\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/c-typsicher\\\/\",\"url\":\"https:\\\/\\\/www.microconsult.de\\\/c-typsicher\\\/\",\"name\":\"C++: Typsicher - MicroConsult Academy GmbH\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/#website\"},\"datePublished\":\"2025-11-28T21:11:23+00:00\",\"dateModified\":\"2026-02-14T05:50:47+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/#\\\/schema\\\/person\\\/b6d4c4ae959b068fbe8d9416ed019a0a\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/c-typsicher\\\/#breadcrumb\"},\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.microconsult.de\\\/c-typsicher\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/c-typsicher\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.microconsult.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"C++: Typsicher\"}]},{\"@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":"C++: Type Safe - 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\/c-type-safe\/","og_locale":"en_GB","og_type":"article","og_title":"C++: Typsicher - MicroConsult Academy GmbH","og_description":"Fehler zur Compile-Zeit finden und Tippfehler reduzieren Autor: Andreas Fertig Beitrag &#8211; Embedded Software Engineering Kongress 2018 Templates existieren in C++ bereits seit einiger Zeit. Mit dem C++11 Standard-Update wurden sie noch besser. Nun gibt es\u00a0 variadische Template-Argumente. Einige Leute argumentieren, dass dies das wichtigste neue Feature in C++11 ist. Templates sind eine gute M\u00f6glichkeit, [&hellip;]","og_url":"https:\/\/www.microconsult.de\/en\/c-type-safe\/","og_site_name":"MicroConsult Academy GmbH","article_published_time":"2025-11-28T21:11:23+00:00","article_modified_time":"2026-02-14T05:50:47+00:00","author":"weissblau media","twitter_card":"summary_large_image","twitter_misc":{"Written by":"weissblau media","Estimated reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.microconsult.de\/c-typsicher\/#article","isPartOf":{"@id":"https:\/\/www.microconsult.de\/c-typsicher\/"},"author":{"name":"weissblau media","@id":"https:\/\/www.microconsult.de\/#\/schema\/person\/b6d4c4ae959b068fbe8d9416ed019a0a"},"headline":"C++: Typsicher","datePublished":"2025-11-28T21:11:23+00:00","dateModified":"2026-02-14T05:50:47+00:00","mainEntityOfPage":{"@id":"https:\/\/www.microconsult.de\/c-typsicher\/"},"wordCount":970,"commentCount":0,"inLanguage":"en-GB","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.microconsult.de\/c-typsicher\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.microconsult.de\/c-typsicher\/","url":"https:\/\/www.microconsult.de\/c-typsicher\/","name":"C++: Type Safe - MicroConsult Academy GmbH","isPartOf":{"@id":"https:\/\/www.microconsult.de\/#website"},"datePublished":"2025-11-28T21:11:23+00:00","dateModified":"2026-02-14T05:50:47+00:00","author":{"@id":"https:\/\/www.microconsult.de\/#\/schema\/person\/b6d4c4ae959b068fbe8d9416ed019a0a"},"breadcrumb":{"@id":"https:\/\/www.microconsult.de\/c-typsicher\/#breadcrumb"},"inLanguage":"en-GB","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.microconsult.de\/c-typsicher\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.microconsult.de\/c-typsicher\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.microconsult.de\/"},{"@type":"ListItem","position":2,"name":"C++: Typsicher"}]},{"@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\/7683","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=7683"}],"version-history":[{"count":5,"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/posts\/7683\/revisions"}],"predecessor-version":[{"id":11827,"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/posts\/7683\/revisions\/11827"}],"wp:attachment":[{"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/media?parent=7683"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/categories?post=7683"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/tags?post=7683"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}