{"id":1680,"date":"2023-11-16T09:09:49","date_gmt":"2023-11-16T09:09:49","guid":{"rendered":"https:\/\/byte-bucket.com\/2023\/11\/16\/iso-c-komitee-bereitet-c26-vor-neue-features-und-moegliche-einfuehrungen\/"},"modified":"2023-11-16T09:09:49","modified_gmt":"2023-11-16T09:09:49","slug":"iso-c-komitee-bereitet-c26-vor-neue-features-und-moegliche-einfuehrungen","status":"publish","type":"post","link":"https:\/\/byte-bucket.com\/?p=1680","title":{"rendered":"ISO-C++-Komitee bereitet C++26 vor: Neue Features und m\u00f6gliche Einf\u00fchrungen"},"content":{"rendered":"<p>Das ISO-C++-Komitee hat sich k\u00fcrzlich getroffen, um den n\u00e4chsten C++-Standard C++26 vorzubereiten, obwohl der offizielle Start von C++23 bereits geplant ist. Bei dem Treffen wurden bereits 40 Vorschl\u00e4ge angenommen, darunter die Verwendung des Unterstrichs _ als namenlosen Platzhalter f\u00fcr C++26. Das Komitee hat auch vier weitere \u00c4nderungen in der Sprache und 19 in der Standard Library f\u00fcr C++26 aufgenommen.<\/p>\n<p>Laut dem aktuellen Trip-Report von Herb Sutter sind Contracts und Reflexion noch nicht endg\u00fcltig f\u00fcr C++26 beschlossen, befinden sich aber auf einem guten Weg. Diese beiden Neuerungen sind bedeutend f\u00fcr die Sprache. Urspr\u00fcnglich waren Contracts bereits f\u00fcr C++20 geplant, wurden aber aufgrund von Meinungsverschiedenheiten beim Design nicht umgesetzt. Das Design-by-Contract-Prinzip stammt aus der Programmiersprache Eiffel und zielt darauf ab, eine nahtlose Interaktion zwischen Softwarekomponenten sicherzustellen. Es legt fest, dass der aufrufende Kontext einen Vertrag (Contract) mit einer Funktion oder Methode abschlie\u00dft, der Vor- und Nachbedingungen enth\u00e4lt. Die Einhaltung der Vorbedingungen liegt in der Verantwortung des Aufrufers, w\u00e4hrend die aufgerufene Funktion sicherstellen muss, dass die Nachbedingungen gelten, wenn sie beendet wird. Zus\u00e4tzlich gibt es Invarianten, die w\u00e4hrend der Ausf\u00fchrung der Funktion gelten m\u00fcssen.<\/p>\n<p>Auf dem Treffen hat das Komitee eine neue Syntax f\u00fcr Contracts vereinbart, die auf doppelte Klammern f\u00fcr die Bedingungen verzichtet. Au\u00dferdem wurde das Schl\u00fcsselwort assert durch contract_assert ersetzt, um Inkompatibilit\u00e4ten zu vermeiden. Ein Beispiel f\u00fcr die neue Syntax wurde in einem Blogbeitrag von Herb Sutter pr\u00e4sentiert.<\/p>\n<p>Ein weiteres wichtiges Konzept, das C++ bisher nicht unterst\u00fctzt, ist die Reflexion. Mit C++26 wird sich das \u00e4ndern. Durch die Verwendung von Reflexion kann ein Programm zur Compile-Zeit auf seine eigene Struktur zugreifen und Informationen \u00fcber Klassen und Methoden abrufen sowie diese sogar ver\u00e4ndern. Das ISO-C++-Komitee hat sich einstimmig f\u00fcr das Proposal Reflection for C++26 entschieden, das auf zwei fr\u00fcheren Vorschl\u00e4gen basiert und die geplante Syntax anhand eines Beispiels zeigt.<\/p>\n<p>Weitere Details zu den geplanten Neuerungen f\u00fcr C++26 sowie den bereits akzeptierten \u00c4nderungen k\u00f6nnen dem Blogbeitrag von Herb Sutter entnommen werden. C++23 wird voraussichtlich im Dezember offiziell gestartet, nachdem der Inhalt bereits seit Mitte des Jahres fertig ist und nur noch auf die Freigabe nach der Abstimmungsphase wartet.<\/p>\n<p>Schlagw\u00f6rter: C26 + Contracts + Reflexion<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Das ISO-C++-Komitee hat sich k\u00fcrzlich getroffen, um den n\u00e4chsten C++-Standard C++26 vorzubereiten, obwohl der offizielle Start von C++23 bereits geplant ist. Bei dem Treffen wurden bereits 40 Vorschl\u00e4ge angenommen, darunter die Verwendung des Unterstrichs _ als namenlosen Platzhalter f\u00fcr C++26. Das Komitee hat auch vier weitere \u00c4nderungen in der Sprache&#46;&#46;&#46;<\/p>\n","protected":false},"author":4,"featured_media":1679,"comment_status":"","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-1680","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/byte-bucket.com\/index.php?rest_route=\/wp\/v2\/posts\/1680","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/byte-bucket.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/byte-bucket.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/byte-bucket.com\/index.php?rest_route=\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/byte-bucket.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1680"}],"version-history":[{"count":0,"href":"https:\/\/byte-bucket.com\/index.php?rest_route=\/wp\/v2\/posts\/1680\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/byte-bucket.com\/index.php?rest_route=\/wp\/v2\/media\/1679"}],"wp:attachment":[{"href":"https:\/\/byte-bucket.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1680"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/byte-bucket.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1680"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/byte-bucket.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1680"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}