Kokios naujos funkcijos C ++ 17?

C ++ 17 yra visiškai baigtas, todėl dideli pokyčiai mažai tikėtini. C ++ 17 buvo pareikšta šimtai nuosprendžių.

Kuri iš šių funkcijų buvo pridėta C + + C ++ 17?

Naudojant „C ++“ kompiliatorių, palaikantį „C ++ 1z“, kuri iš šių funkcijų bus pasiekiama, kai kompiliatorius atnaujinamas į C + + 17?

786
27 июня '16 в 21:06 2016-06-27 21:06 Yakk yra paklausta - Adomas Nevraumontas birželio 27 d. 16:06 2016-06-27 21:06
ответ 1 atsakymas

Kalbos funkcijos:

Šablonai ir bendras kodas

Lambda

Atributai

Sintaksės kliringas

Kelių grąžinimo ir srauto valdymo išvalymas

  • Struktūriniai rišikliai

    • Iš esmės, pirmos klasės std::tie su auto
    • Pavyzdys:
      • const auto [it, inserted] = map.insert( {"foo", bar} );
      • Sukuria ir inserted kintamuosius, kurių tipas yra iš pair , kuris grąžina map::insert .
    • Dirba su „tuple / pair-likes“ ir „ std::array bei santykinai plokščiomis struktūromis.
    • Iš tikrųjų vadinami standartiniai struktūrizuoti rišikliai
  • if (init; condition) ir switch (init; condition)

    • if (const auto [it, inserted] = map.insert( {"foo", bar} ); inserted)
    • Praplečia, if(decl) Į atvejus, kai decl negali būti konvertuojama į „bool“.
  • Ciklų apibendrinimo intervalas

    • Daugiausia palaikoma laikrodžio ar pabaigos iteratorių, kurie nėra tokio paties tipo kaip iteratoriai, kurie padeda su kilpomis su nuliniu galu, ir tt
  • jei constexpr

    • Labai dažnai prašoma funkcija supaprastina beveik bendrą kodą.

Skirtingi

Bibliotekos papildymai:

Duomenų tipai

  • std::variant<Ts...>

    • Beveik visada tuščias paskutinis dalykas, kurį patikrinau?
    • Pažymėtas asociacijos tipas
    • {awesome | naudinga}
  • std::optional

    • Gal yra kažkas iš
    • Juokingi naudingi
  • std::any

    • Yra vienas (kurį galima kopijuoti)
  • std::string_view

    • std::string kaip atskaitos ženklas arba antraštė
    • Niekada nepriimkite string const> dar kartą. Be to, jūs galite padaryti budėjimo milijardą kartų greičiau.
    • "hello world"sv
    • constexpr char_traits
  • std::byte uždarė daugiau nei jie galėjo kramtyti.

    • Nei sveikasis skaičius, nei simbolis, tiesiog duomenys

Skambinkite medžiaga

TS v1 failų sistema

Nauji algoritmai

  • for_each_n

  • reduce

  • transform_reduce

  • exclusive_scan

  • inclusive_scan

  • transform_exclusive_scan

  • transform_inclusive_scan

  • Pridėta transliacijos tikslais, atidaryta, net jei nenaudojate juos transliacijos metu

Sriegimas

(dalys) TS v1 bibliotekos pagrindai nėra išvardyti aukščiau ar žemiau

Konteinerių patobulinimai

„Smart Index“ pakeitimai

Kiti std duomenų tipo patobulinimai:

Skirtingi

Simbolių bruožai

Pasenusi

„Isocpp.org“ turi nepriklausomą „C ++ 14“ pakeitimų sąrašą; jis buvo iš dalies apiplėštas.

Žinoma, TS darbas tęsiasi lygiagrečiai, todėl yra keletas TS, kurie nėra pakankamai subrendę, kad turėsime laukti kito kartojimo. Kito iteracijos tikslas yra C ++ 20, kaip buvo planuota anksčiau, o ne C ++ 19, kaip rodo kai kurie gandai. C ++ 1O buvo išvengta.

Šį reddit įrašą ir šį reddit įrašą paimtas šaltinių sąrašas su nuorodomis, pridėtomis per „googling“ arba iš „isocpp.org“ puslapio.

Papildomi įrašai, nuslėpti iš SD-6 funkcijų sąrašo.

turi būti apiplėšiamas sąvarų funkcijų sąrašas ir bibliotekų funkcijų sąrašas . Atrodo, kad tai nėra patikima, nes tai yra C ++ 1z, o ne C ++ 17.

Šiose skaidrėse buvo kai kurių funkcijų, kurios kitur nerastos.

Nors „pašalinta“ nebuvo nurodyta, čia yra trumpas kelių dalykų sąrašas ((daugiausia?) Ankstesnis pasenęs), kurie pašalinami iš C ++ 17 iš C ++:

Ištrinta:

Buvo kopijų. Nesu tikras, kad jie turės kokį nors poveikį kodui, arba jei jie paprasčiausiai išvalomi standarte:

Dokumentai, kurie dar neįtraukti į pirmiau minėtus dokumentus:

Pakeitimų spektras:

Papildoma nuoroda:

992
27 июня '16 в 21:06 2016-06-27 21:06 atsakymą pateikė Yakk - Adam Nevraumont, birželio 27 d., 16 val., 06:06 2016-06-27 21:06

Kiti klausimai dėl etikečių arba Užduoti klausimą