Ko te Komiti ISO mo te Paerewa o te Reo C++ whakaaetia paerewa ao"C ++ 20". Ko nga kaha e whakaatuhia ana i roto i nga korero, haunga nga keehi motuhake, tautokohia i roto i te hunga whakahiato GCC, Ngatata и Microsoft Visual C ++. Ko nga whare pukapuka paerewa e tautoko ana i te C++20 ka whakatinanahia i roto i te kaupapa whakanui.
I roto i nga marama e rua e whai ake nei, ko te whakatakotoranga kua whakamanahia kei te waahi ki te whakarite i te tuhinga mo te whakaputanga, ka mahia nga mahi mo te whakatika whakatika i nga hapa o te takikupu me nga hapa. Hei te timatanga o Whiringa-a-rangi, ka tukuna te tuhinga ki te ISO mo te whakaputa i raro i te ingoa okawa ISO/IEC 14882:2020. I tenei wa, kua timata kee te komiti ki te mahi mo te paerewa C++23 e whai ake nei (C++2b) ka whai whakaaro ki nga whiringa ka taea i tana hui mariko e whai ake nei. nga mahi auaha.
"Aria" kua taapirihia, nga taapiri tauira, ka taea e koe te tautuhi i te huinga o nga whakaritenga tawhā tauira, i te wa whakahiato, ka whakawhāiti i te huinga tohenga ka taea te whakaae hei tawhā tauira. Ka taea te whakamahi i nga ariā hei karo i nga taupatupatu arorau i waenga i nga ahuatanga o nga momo raraunga e whakamahia ana i roto i te tauira me nga ahuatanga momo raraunga o nga tawhā whakauru.
tauira
ariā ŌriteWhakariterite = me hiahia(T a, T b) {
{a == b } -> std::boolean;
{ a != b } -> std::boolean;
};
Whakaaetia whakawhānui mo te mahi me nga waahanga ka taea te whakamahi hei utu mo nga konae pane. Ko nga waahanga he huarahi hou hei whakarite i te waehere puna i runga i te tautuhi i nga rohe o nga waahanga, me te kore e whakauru i nga konae pane ma te "#include".
Tonotono __VA_OPT__ mo te roha urutau o nga tonotono taurangi i runga i te ahua o nga tohu kei roto i te tautohe taurangi.
Tautoko mo te kaiwhakahaere "" mo te whakataurite e toru-ara.
Tautoko mo nga kaiwhakataki huanga taunoa mo nga mara moka.
Te kaha ki te hopu i nga kupu "*tenei" lambda.
struct int_value {
int n = 0;
auto getter_fn() {
//KINO:
// hoki [=]() { hoki n; };
// HE pai:
hoki [=, *tenei]() { hoki mai n; };
}
};
Te waea i nga huānga ma te atatohu (Pointer-to-member), ma te whakamahi tohutohu ki nga mea rangitahi kua tautuhia ma te kupu "const &".
Ko te kaiwhakahaere muku me te kaiwhakangaro i whakaahuatia i roto i te tuhinga P0722R1.
Ka whakaaetia nga karaehe ki te whakamahi i nga tawhā tauira kaore he momo.
tiki_foo(); // ka whakamahi i te kaihanga hangai
tiki_foo ();
Nga korero lambda kore-mau tonu me te kaihanga.
Whakaaetia te wetereo tauira mo nga korero lambda (“aunoa f = [] (std::vector v)").
Te kaha ki te whakamahi kupu aho i roto i nga tawhā tauira.
Tautoko mo te wetereo arawhiti-a-C - ko nga mara kaore i tino whakarārangihia ki te rarangi arawhiti ka arawhiti taunoa.
hanganga A {
intx;
int y;
int z = 123;
};
A a {.x = 1, .z = 2}; // ax == 1, ay == 0, az == 2
Tautoko mo nga mema hanganga raraunga kau.
Tautoko mo nga huanga pea me nga huanga kare pea hei whakamohio ki te kaihoroi mo te tupono ka puta te hanga here (“[[pea]] mena (tupurangi > 0) {“).
Te kaha ki te whakamahi i nga awhe ki te arawhiti i nga uara taurangi i roto i te kopae "mo".
mo (aunoa v = std::vector{1, 2, 3}; auto& e : v) {
Te tātai aunoa o te rahi huānga ki te hōu ("hou taurua []{1,2,3}");
Ko te huanga “[[no_unique_address]]” e kore ai nga taurangi kaore he raraunga e whai waahi.
Tohu ngota (std::ngota > me te std::ngota >).
Te kaha ki te karanga i nga mahi mariko i roto i nga korero here.
Tautoko mo nga mahi tonu ka taea anake te mahi me nga taumau.
consteval int sqr(int n) {
hoki mai n * n;
}
constexpr int r = sqr(100); //ĀE
int x = 100;
int r2 = sqr(x); // HAPA: 'x' kāore e taea te whakamahi hei pūmau
Ka taea te whakamahi constexpr me nga mahi mariko (“constexpr virtual int f() const { return 2; }”).
I roto i te whare pukapuka paerewa:
He tautoko taapiri mo te momo char8_t mo nga aho UTF-8.
He moka nga konae pane (nga mahi moka) me te putanga.
Inaianei ka taea te tirotiro i te prefix me te kumara o nga aho (starts_with, ends_with).
Kua taapirihia te std::remove_cvref, std::unwrap_reference, std::unwrap_decay_ref, std::is_nothrow_convertible me std::type_identity huru.
Kua taapirihia nga mahi std::midpoint, std::lerp, std::bind_front, std::source_location, std::visit, std:: is_constant_evaluated and std::assume_aligned.
He tautoko taapiri mo nga huinga ki te std::make_shared.
Kua taapirihia te mahi std::to_array ki te huri i nga taonga-rite ki te std::array.
He watea ake te wetereo tatau:
enum class rgba_color_channel {whero, kakariki, kahurangi, alpha};
std:: aho_tiro ki te aho(rgba_color_channel my_channel) {
whakawhiti (taku_hongere) {
te whakamahi i te enum rgba_color_channel;
take whero: whakahokia "whero";
case green: whakahokia "matomato";
take kahurangi: whakahokia "puru";
take alpha: whakahokia "alpha";
}
}
I roto i nga taurangi, na te mea kaore i tautuhia, ka aukatihia te whakamahi i te mahi "," (“a[b,c]”). Ko te tautoko mo te nuinga o nga mahi me nga taurangi e kii ana me te kupu matua ohorere kua whakamutua, tae atu ki nga mahi "++" me "—" me nga momo paerewa.
I whakaitihia te maha o nga ahuatanga e hiahiatia ana "ingoa momo" hei tohu i te noho o tetahi momo.