{"id":13953,"date":"2023-03-19T16:26:33","date_gmt":"2023-03-19T16:26:33","guid":{"rendered":"https:\/\/blog.bachi.net\/?p=13953"},"modified":"2023-03-19T16:36:33","modified_gmt":"2023-03-19T16:36:33","slug":"c-language-revisions","status":"publish","type":"post","link":"https:\/\/blog.bachi.net\/?p=13953","title":{"rendered":"C++ language revisions"},"content":{"rendered":"<ul>\n<li><a href=\"https:\/\/en.wikipedia.org\/wiki\/C%2B%2B\">C++98<\/a><\/li>\n<li><a href=\"https:\/\/en.wikipedia.org\/wiki\/C%2B%2B03\">C++03<\/a><\/li>\n<li><a href=\"https:\/\/en.wikipedia.org\/wiki\/C%2B%2B11\">C++11<\/a><\/li>\n<li><a href=\"https:\/\/en.wikipedia.org\/wiki\/C%2B%2B14\">C++14<\/a><\/li>\n<li><a href=\"https:\/\/en.wikipedia.org\/wiki\/C%2B%2B17\">C++17<\/a><\/li>\n<li><a href=\"https:\/\/en.wikipedia.org\/wiki\/C%2B%2B20\">C++20<\/a><\/li>\n<li><a href=\"https:\/\/en.wikipedia.org\/wiki\/C%2B%2B23\">C++23<\/a><\/li>\n<\/ul>\n<h1>C++98<\/h1>\n<h1>C++03<\/h1>\n<h1>C++11 \/ C++0x<\/h1>\n<p>Core language runtime performance enhancements<\/p>\n<ul>\n<li>Rvalue references and move constructors<\/li>\n<li>constexpr \u2013 Generalized constant expressions<\/li>\n<li>Modification to the definition of plain old data<\/li>\n<\/ul>\n<p>Core language build-time performance enhancements<\/p>\n<ul>\n<li>Extern template<\/li>\n<\/ul>\n<p>Core language usability enhancements<\/p>\n<ul>\n<li>Initializer lists<\/li>\n<li>Uniform initialization<\/li>\n<li>Type inference<\/li>\n<li>Range-based for loop<\/li>\n<li>Lambda functions and expressions<\/li>\n<li>Alternative function syntax<\/li>\n<li>Object construction improvement<\/li>\n<li>Explicit overrides and final<\/li>\n<li>Null pointer constant<\/li>\n<li>Strongly typed enumerations<\/li>\n<li>Right angle bracket<\/li>\n<li>Explicit conversion operators<\/li>\n<li>Template aliases<\/li>\n<li>Unrestricted unions<\/li>\n<\/ul>\n<p>Core language functionality improvements<\/p>\n<ul>\n<li>Variadic templates<\/li>\n<li>New string literals<\/li>\n<li>User-defined literals<\/li>\n<li>Multithreading memory model<\/li>\n<li>Thread-local storage<\/li>\n<li>Explicitly defaulted special member functions<\/li>\n<li>Explicitly deleted functions<\/li>\n<li>Type long long int<\/li>\n<li>Static assertions<\/li>\n<li>Allow sizeof to work on members of classes without an explicit object<\/li>\n<li>Control and query object alignment<\/li>\n<li>Allow garbage collected implementations<\/li>\n<li>Attributes<\/li>\n<\/ul>\n<h3>C++ standard library changes<\/h3>\n<p>Upgrades to standard library components<\/p>\n<ul>\n<li>Rvalue references and the associated move support<\/li>\n<li>Support for the UTF-16 encoding unit, and UTF-32 encoding unit Unicode character types<\/li>\n<li>Variadic templates (coupled with Rvalue references to allow for perfect forwarding)<\/li>\n<li>Compile-time constant expressions<\/li>\n<li><code>decltype<\/code><\/li>\n<li><code>explicit<\/code> conversion operators<\/li>\n<li>Functions declared defaulted or deleted<\/li>\n<\/ul>\n<p>Threading facilities<\/p>\n<ul>\n<li><code>std::thread<\/code><\/li>\n<li><code>std::mutex<\/code><\/li>\n<li><code>std::condition_variable<\/code><\/li>\n<li><code>std::async<\/code><\/li>\n<li><code>std::future<\/code><\/li>\n<\/ul>\n<p>Tuple types<\/p>\n<p>Hash tables<\/p>\n<p>Regular expressions<\/p>\n<p>General-purpose smart pointers<\/p>\n<p>Extensible random number facility<\/p>\n<p>Wrapper reference<\/p>\n<p>Polymorphic wrappers for function objects<\/p>\n<p>Type traits for metaprogramming<\/p>\n<p>Uniform method for computing the return type of function objects<\/p>\n<h1>C++14 \/ C++1y<\/h1>\n<h3>New language features<\/h3>\n<p>Function return type deduction<\/p>\n<ul>\n<li><code>auto<\/code><\/li>\n<\/ul>\n<p>Alternate type deduction on declaration<\/p>\n<ul>\n<li><code>decltype<\/code><\/li>\n<\/ul>\n<p>Relaxed constexpr restrictions<\/p>\n<p>Variable templates<\/p>\n<p>Aggregate member initialization<\/p>\n<h1>C++17<\/h1>\n<h1>C++20<\/h1>\n<h1>C++23<\/h1>\n","protected":false},"excerpt":{"rendered":"<p>C++98 C++03 C++11 C++14 C++17 C++20 C++23 C++98 C++03 C++11 \/ C++0x Core language runtime performance enhancements Rvalue references and move constructors constexpr \u2013 Generalized constant expressions Modification to the definition of plain old data Core language build-time performance enhancements Extern template Core language usability enhancements Initializer lists Uniform initialization Type inference Range-based for loop [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-13953","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/blog.bachi.net\/index.php?rest_route=\/wp\/v2\/posts\/13953","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.bachi.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.bachi.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.bachi.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.bachi.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=13953"}],"version-history":[{"count":3,"href":"https:\/\/blog.bachi.net\/index.php?rest_route=\/wp\/v2\/posts\/13953\/revisions"}],"predecessor-version":[{"id":13956,"href":"https:\/\/blog.bachi.net\/index.php?rest_route=\/wp\/v2\/posts\/13953\/revisions\/13956"}],"wp:attachment":[{"href":"https:\/\/blog.bachi.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=13953"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.bachi.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=13953"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.bachi.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=13953"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}