{"id":4724,"date":"2020-08-24T11:19:36","date_gmt":"2020-08-24T10:19:36","guid":{"rendered":"http:\/\/roboblog.fatal-fury.de\/?p=4724"},"modified":"2020-08-24T11:19:36","modified_gmt":"2020-08-24T10:19:36","slug":"c-guns-c20-und-utf8-unicode","status":"publish","type":"post","link":"http:\/\/roboblog.fatal-fury.de\/?p=4724","title":{"rendered":"C++ Guns: C++20 und UTF8 Unicode"},"content":{"rendered":"<p>In C++20 \u00e4ndert sich der Typ von u8 string literals von char nach char8_t. Damit compiliert \u00e4lterer Code nicht mehr<\/p>\n<p>GCC10 Error so far:<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\nerror: use of deleted function 'std::basic_ostream&lt;char, _Traits&gt;&amp; std::operator&lt;&lt;(std::basic_ostream&lt;char, _Traits&gt;&amp;, const char8_t*) &#x5B;with _Traits = std::char_traits&lt;char&gt;]'\r\n<\/pre>\n<p>Ich sag es mal positiv: ein weitere Schritt ist gemacht. Und bis dahin behelfen wir uns mit dreckigen casts:<\/p>\n<pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\r\nauto func(std::ostream&amp; ss) {\r\n    ss &lt;&lt; reinterpret_cast&lt;const char*&gt;(u8&quot;\\u00e4 \\u00f6 \\u00fc \\u2581&quot;) &lt;&lt; &quot;\\n&quot;;\r\n}\r\n<\/pre>\n<p>Ausgabe:<\/p>\n<p>\u00e4 \u00f6 \u00fc &#9601;<\/p>\n<p>Die Verwendung von char8_t u8string und u8stringliterals ist gef\u00fchlt noch nicht ausgereift :\/<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In C++20 \u00e4ndert sich der Typ von u8 string literals von char nach char8_t. Damit compiliert \u00e4lterer Code nicht mehr GCC10 Error so far: error: use of deleted function 'std::basic_ostream&lt;char, _Traits&gt;&amp; std::operator&lt;&lt;(std::basic_ostream&lt;char, _Traits&gt;&amp;, const char8_t*) &#x5B;with _Traits = std::char_traits&lt;char&gt;]' Ich sag es mal positiv: ein weitere Schritt ist gemacht. Und bis dahin behelfen wir uns [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[17],"class_list":["post-4724","post","type-post","status-publish","format-standard","hentry","category-allgemein","tag-cpp"],"_links":{"self":[{"href":"http:\/\/roboblog.fatal-fury.de\/index.php?rest_route=\/wp\/v2\/posts\/4724","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/roboblog.fatal-fury.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/roboblog.fatal-fury.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/roboblog.fatal-fury.de\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/roboblog.fatal-fury.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=4724"}],"version-history":[{"count":8,"href":"http:\/\/roboblog.fatal-fury.de\/index.php?rest_route=\/wp\/v2\/posts\/4724\/revisions"}],"predecessor-version":[{"id":4732,"href":"http:\/\/roboblog.fatal-fury.de\/index.php?rest_route=\/wp\/v2\/posts\/4724\/revisions\/4732"}],"wp:attachment":[{"href":"http:\/\/roboblog.fatal-fury.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=4724"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/roboblog.fatal-fury.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=4724"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/roboblog.fatal-fury.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=4724"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}