b'\n_START_ARTICLE_\nC++11\n_START_PARAGRAPH_\nC++11, (ent. C++0x), on ISO:n 12.8.2011 hyv\xc3\xa4ksym\xc3\xa4 C++-ohjelmointikielen standardi ISO/IEC 14882:2011. Standardi korvasi aiemmat ISO/IEC 14882:1998 (C++98) ja ISO/IEC 14882:2003 (C++03) standardiversiot._NEWLINE_Nimess\xc3\xa4 esiintyv\xc3\xa4 11 tulee yleisen nime\xc3\xa4misk\xc3\xa4yt\xc3\xa4nn\xc3\xb6n mukaisesti standardin julkaisuvuodesta. C++0x-tunnusta k\xc3\xa4ytettiin ty\xc3\xb6skentelyvaiheessa, koska valmistumisvuodesta ei ollut varmuutta, mutta sen uskottiin valmistuvan ennen vuotta 2010._NEWLINE_Standardin on korvannut C++14 standardi ISO/IEC 14882:2014, joka hyv\xc3\xa4ksyttiin 18. elokuuta 2014._NEWLINE_C++11 lis\xc3\xa4si itse kieleen useita ominaisuuksia sek\xc3\xa4 laajentaa C++:n standardikirjastoa STL:a. Standardikirjaston laajennos k\xc3\xa4sitt\xc3\xa4\xc3\xa4 suurimman osan aikaisemmasta C++ Technical Report 1:st\xc3\xa4 (TR1).\n_START_SECTION_\nTyyppiturvallinen nolla-osoitin\n_START_PARAGRAPH_\nKieleen on lis\xc3\xa4tty tyyppiturvallinen nullptr m\xc3\xa4\xc3\xa4rittely._NEWLINE_Vanha NULL -makro usein k\xc3\xa4sitell\xc3\xa4\xc3\xa4n int-tyyppin\xc3\xa4 eik\xc3\xa4 osoittimena. Vanhempi tapa voi h\xc3\xa4mment\xc3\xa4\xc3\xa4 ajonaikaista tyyppimekanismia kutsumaan v\xc3\xa4\xc3\xa4r\xc3\xa4\xc3\xa4 metodia._NEWLINE_K\xc3\xa4ytt\xc3\xb6esimerkki:_NEWLINE_int a = 0;int *p = nullptr;p = &a;(*p) = 42;\n_START_SECTION_\nVakiolauseke\n_START_PARAGRAPH_\nVakiolauseke (constexpr) m\xc3\xa4\xc3\xa4ritt\xc3\xa4\xc3\xa4, ett\xc3\xa4 lauseke on mahdollista arvioida k\xc3\xa4\xc3\xa4nn\xc3\xb6saikana._NEWLINE_Esimerkki:_NEWLINE_const double pi = 3.14;constexpr double pi_mul(int n) { return n * pi; }_NEWLINE_K\xc3\xa4ytt\xc3\xb6 olettaa ett\xc3\xa4 parametrina annettavat arvot ovat k\xc3\xa4\xc3\xa4nn\xc3\xb6saikana tunnettuja literaaleja. C++14 laajentaa vakiolausekkeen m\xc3\xa4\xc3\xa4rittely\xc3\xa4.\n_START_SECTION_\nYhdenmukaistettu alustaminen\n_START_PARAGRAPH_\nOlioiden alustamista on yhdenmukaistettu muutoksilla m\xc3\xa4\xc3\xa4rittelyyn._NEWLINE_Esimerkiksi kolmen alkion vektorin alustaminen arvoilla:_NEWLINE_std::vector<float> v = {0.1, 0.2, 1.0};_NEWLINE_Anonyyminen vektorin alustaminen ja v\xc3\xa4litt\xc3\xa4minen funktiolle:_NEWLINE_myfunction( std::vector<float>{0.1, 0.2, 1.0} );\n_START_SECTION_\nRajatun alueen toistorakenne\n_START_PARAGRAPH_\nPerinteisten C-kielen toistorakenteiden vaihtoehdoksi on lis\xc3\xa4tty automatisoitu vaihtoehto. Uudempi menetelm\xc3\xa4 v\xc3\xa4hent\xc3\xa4\xc3\xa4 tyypillisen koodin toistuvaa kirjoittamista._NEWLINE_Tietorakenteissa olevien arvojen k\xc3\xa4sittely\xc3\xa4 voidaan yksinkertaistaa seuraavasti:_NEWLINE_std::vector<int> v = {0, 1, 2, 3, 4, 5};for (auto i : v){_NEWLINE_     std::cout << i << std::endl;}\n_START_SECTION_\nDelegoiva konstruktori\n_START_PARAGRAPH_\nDelegoiva konstruktori v\xc3\xa4hent\xc3\xa4\xc3\xa4 ohjelmakoodin toistoa useiden konstruktorien yhteydess\xc3\xa4._NEWLINE_class Testi{private:_NEWLINE_    std::string m_s;_NEWLINE_    int m_i;public:_NEWLINE_    Testi(std::string s, int i) : m_s(s), m_i(i) {}_NEWLINE_    Testi(int i) : Testi("testi", i) {}};\n_START_SECTION_\nAtomiset operaatiot\n_START_PARAGRAPH_\nStandardi lis\xc3\xa4\xc3\xa4 standardikirjastoon atomisuuden toiminnot._NEWLINE_Esimerkki k\xc3\xa4ytt\xc3\xb6tapauksesta:_NEWLINE_std::atomic<long> almuuttuja;almuuttuja = 0; // asettaa arvoon 0// lis\xc3\xa4\xc3\xa4 muuttujaan arvon 42 ja palauttaa uuden arvonlong uusiarvo = almuuttuja.fetch_add(42);_NEWLINE_Ohjelmointikielen k\xc3\xa4ytt\xc3\xa4m\xc3\xa4 tekninen toteutustapa voi riippua k\xc3\xa4ytetyst\xc3\xa4 suorittimesta.\n_START_SECTION_\nS\xc3\xa4ikeistyksen tuki\n_START_PARAGRAPH_\nMonis\xc3\xa4ikeistykselle on lis\xc3\xa4tty alustariippumatonta tukea m\xc3\xa4\xc3\xa4rittelyyn. N\xc3\xa4in ollen ohjelmakoodin siirt\xc3\xa4minen helpottuu v\xc3\xa4hemmill\xc3\xa4 muutoksilla._NEWLINE_Standardikirjastossa on std::thread s\xc3\xa4ikeiden luomiseen ja k\xc3\xa4sittelyyn. Parametrina t\xc3\xa4lle annetaan funktio-objekti (osoite s\xc3\xa4ikeen suorituksen alkupaikkaan)._NEWLINE_Lis\xc3\xa4ksi thread_local avainsanalla voi m\xc3\xa4\xc3\xa4ritell\xc3\xa4 s\xc3\xa4iekohtaisia muuttujia._NEWLINE_Synkronointitukea on atomisien operaatioiden lis\xc3\xa4ksi k\xc3\xa4ytett\xc3\xa4viss\xc3\xa4 luokilla std::mutex ja std::lock_guard._NEWLINE_Synkronointiin on my\xc3\xb6s aikarajoitettu std::timed_mutex sek\xc3\xa4 rekursion salliva std::recursive_mutex ja n\xc3\xa4iden yhdistelm\xc3\xa4 std::recursive_timed_mutex.\n_START_SECTION_\nTuple-tyyppi\n_START_PARAGRAPH_\nTuple on template-pohjainen vaihtoehto C-kielen struct-tyypille._NEWLINE_typedef std::tuple <int, string, double> tTuple;tTuple data(42, "heippa", 3.14);_NEWLINE_Vastaava tietotyyppi on aiemmin esiintynyt esimerkiksi rinnakkaisohjelmointiiin kehitetyss\xc3\xa4 Alef -kieless\xc3\xa4.\n_START_SECTION_\nSiirto-operaattorit\n_START_PARAGRAPH_\nTyypillisen copy-delete menettelyn sijaan on mahdollista k\xc3\xa4ytt\xc3\xa4\xc3\xa4 tehokkaampaa siirto-operaattoria (engl. move):_NEWLINE_class MyContainer{// ...MyContainer & operator=(MyContainer && other){_NEWLINE_    if (this != &other) _NEWLINE_    {_NEWLINE_         // ..._NEWLINE_    }_NEWLINE_    return *this;}_NEWLINE_Menetelm\xc3\xa4 v\xc3\xa4ltt\xc3\xa4\xc3\xa4 nk. deep-copy toiminnon, joka voi olla raskas k\xc3\xa4yt\xc3\xb6ss\xc3\xa4.'