C++20 paerewa kua whakaaetia

Komiti Paerewa ISO C++ whakaaetia paerewa ā-ao"C ++ 20"Ko ngā āheinga i whakaaturia i roto i te whakatakotoranga, haunga ngā take takitahi, tautokohia i roto i ngā kaiwhakaemi GCC, Ngatata и Microsoft Visual C ++Kua whakatinanahia ngā whare pukapuka paerewa e tautoko ana i te C++20 i roto i te kaupapa. whakanui.

I roto i ngā marama e rua e whai ake nei, ka whai wāhi te whakatakotoranga kua whakaaetia ki tētahi wāhanga whakarite tuhinga, ā, i taua wā ka mahia ngā mahi whakatika hei whakatika i ngā hapa tuhituhi me ngā hapa tuhituhi. I te tīmatanga o Noema, ka tukuna te putanga whakamutunga o te tuhinga ki te ISO hei whakaputanga i raro i te ingoa whaimana ISO/IEC 14882:2020. I taua wā tonu, kua tīmata kē te komiti ki te mahi i te paerewa C++23 e whai ake nei (C++2b) ā, ka whakaarohia ngā whakapainga pea i tana hui mariko e whai ake nei. nga mahi auaha.

Main особенности C ++ 20 (ngā tauira waehere):

  • Kua tāpirihia ngā ariā, arā, ngā toronga tauira e āhei ai koe ki te tautuhi i tētahi huinga whakaritenga mō ngā tawhā tauira, e herea ana i te huinga tautohe ka taea te whakaae hei tawhā tauira i te wā whakahiato. Ka taea te whakamahi i ngā ariā hei karo i ngā taupatupatu arorau i waenga i ngā āhuatanga o ngā momo raraunga e whakamahia ana i roto i tētahi tauira me ngā āhuatanga o ngā momo raraunga o ngā tawhā whakauru.

    tauira
    ariā TauriteWhakataurite = me(T a, T b) {
    { a == b } -> std::puorean;
    { a != b } -> std::puorean;
    };

  • I whakaaetia ngā mea e whai ake nei ki te hanganga: whakawhānui Mō te mahi me ngā kōwae, ka taea te whakamahi hei utu mō ngā kōnae pane. Ka whakaratohia e ngā kōwae he huarahi hou ki te whakarite i te waehere pūtake i runga i ngā rohe wāhanga, me te kore e hiahiatia kia whakaurua ngā kōnae pane mā te "#include."
  • Macro __VA_OPT__ mō te whakawhanui urutau o ngā macro variadic i runga i te aroaro o ngā tohu i roto i te tautohe variadic.
  • Tautoko mō te kaiwhakahaere " " mō te whakatairite-toru.
  • Tautoko mō ngā kaiwhakaara mema taunoa mō ngā āpure moka.
  • Te āheinga o te hopu lambda i ngā kīanga "*tēnei".

    uara_hanganga {
    int n = 0;
    te tiki aunoa_fn() {
    // KINO:
    // whakahoki [=]() { whakahoki n; };

    // PAI:
    whakahokia [=, *tēnei]() { whakahokia n; };
    }
    };

  • Te urunga atu ki te tohu-ki-te-mema mā te whakamahi i ngā tohu ki ngā mea rangitahi kua tautuhia mā te kīanga "const &".
  • Ko te kaiwhakahaere muku me te kaiwhakangaro kua whakaahuatia i roto i te tuhinga P0722R1.
  • Ka whakaaetia ngā akomanga ki te whakamahi i ngā tawhā tauira me te kore he momo.

    hanganga foo {
    foo() = taunoa;
    constexpr foo(int) {}
    };

    tauira
    tiki_foo aunoa() {
    whakahokia te f;
    }

    get_foo(); // e whakamahi ana i te kaihanga huna
    tiki_foo ();

  • Ngā kīanga lambda kore-pūmau me te kaihanga.
  • Te whakaaetia o te wetereo tauira mō ngā kīanga lambda (auto f = [] (std::vector v)»).
  • Te kaha ki te whakamahi i ngā kupu whakarite aho i roto i ngā tawhā tauira.
  • Tautoko mō te wetereo tīmatanga momo-C - ko ngā āpure kāore i te rārangihia i te rārangi tīmatanga ka tīmatahia ā-taunoa.

    hanganga A {
    roto x;
    roto y;
    int z = 123;
    };

    A a {.x = 1, .z = 2}; // ax == 1, ay == 0, az == 2

  • Tautoko mō ngā mema kau o ngā hanganga raraunga.
  • Tautoko mō ngā huanga tūpono me ngā huanga kāore i te tūpono hei whakamōhio i te kaiwhakaarotau mō te tūponotanga o te whakaoho i tētahi hanganga herenga ('[[likely]] if (random > 0) {').
  • Te kaha ki te whakamahi i ngā awhe hei tīmatanga i ngā uara taurangi i roto i te koropiko mō

    mō (aunoa v = std::vector{1, 2, 3}; aunoa& e : v) {

  • Tātaitanga aunoa o te rahi o te rarangi i roto i te new("new double[]{1,2,3}");
  • Mā te huanga "[[no_unique_address]]" ka kore e noho nui ngā taurangi kāore he raraunga.
  • Ngā tohu atomika (std::atomic > me te std::atomic >).
  • Te āheinga ki te karanga i ngā mahi mariko i roto i ngā kīanga ā-whaiaro.
  • Tautoko mō ngā mahi tonu ka taea anake te mahi me ngā pūmau.

    te uara tawhito int sqr(int n) {
    whakahokia mai n * n;
    }

    constexpr int r = sqr(100); // ĀE
    int x = 100;
    int r2 = sqr(x); // HAPA: Kāore e taea te whakamahi i te 'x' hei pūmau

  • Te āheinga ki te whakamahi i te constexpr me ngā mahi mariko ("constexpr virtual int f() const { return 2; }").
  • I roto i te whare pukapuka paerewa:
    • Kua tāpirihia te tautoko mō te momo char8_t mō ngā aho UTF-8.
    • Kua tāpirihia ngā kōnae moka (ngā mahi moka) me te pane putanga.
    • Ka taea inaianei te tirotiro i te kupumatua me te kupu whakamutunga o ngā aho (tīmata_ki, mutu_ki).
    • Kua tāpirihia ngā āhuatanga std::remove_cvref, std::unwrap_reference, std::unwrap_decay_ref, std::is_nothrow_convertible me std::type_identity.
    • Kua tāpirihia ngā mahi std::midpoint, std::lerp, std::bind_front, std::source_location, std::visit, std::is_constant_evaluated me std::assume_aligned.
    • Kua tāpirihia te tautoko mō ngā rarangi ki te std::make_shared.
    • Kua tāpirihia te mahi std::to_array hei huri i ngā mea rite ki te array ki te std::array.
  • He tikanga whakamahi māmā ake mō ngā tataunga:

    akomanga enum rgba_color_channel { whero, kakariki, kikorangi, ārepa };

    std::tiro_aho_ki_aho_(rgba_tae_hongere_taku_hongere) {
    whakawhiti (taku_hongere) {
    te whakamahi i te enum rgba_color_channel;
    pū whero: whakahokia "whero";
    kākāriki: whakahokia "kākāriki";
    kikorangi: whakahokia "kikorangi";
    pūāhua ārepa: whakahokia "ārepa";
    }
    }

  • Nā te whanonga kāore i tautuhia, kāore e whakaaetia te whakamahi i te kaiwhakahaere "," ("a[b,c]") i roto i ngā taupū. Kua mutu te tautoko mō te nuinga o ngā mahi i runga i ngā taurangi i whakapuakina me te kupumatua volatile, tae atu ki ngā kaiwhakahaere "++" me "—" i runga i ngā momo paerewa.
  • I whakaitihia te maha o ngā āhuatanga e hiahiatia ai te whakatakotoranga "ingoa momo" hei tohu i te aroaro o tētahi momo.

Source: opennet.ru

Hokona te manaaki pono mo nga waahi me te tiaki DDoS, nga kaiwhakarato VPS VDS 🔥 Hokona he manaaki paetukutuku pono me te tiakitanga DDoS, ngā tūmau VPS VDS | ProHoster