C++26 เชงเซ‹เชฐเชฃ เชฎเช‚เชœเซ‚เชฐ

ISO C++ เชญเชพเชทเชพ เชฎเชพเชจเช•เซ€เช•เชฐเชฃ เชธเชฎเชฟเชคเชฟเช เชธเซเชชเชทเซเชŸเซ€เช•เชฐเชฃเชจเชพ เช…เช‚เชคเชฟเชฎ เชธเช‚เชธเซเช•เชฐเชฃเชจเซ‡ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ€ เช›เซ‡ เชœเซ‡ เช†เช‚เชคเชฐเชฐเชพเชทเซเชŸเซเชฐเซ€เชฏ เชงเซ‹เชฐเชฃ "C++26" เชฌเชจเชพเชตเซ‡ เช›เซ‡. เชธเซเชชเชทเซเชŸเซ€เช•เชฐเชฃเชฎเชพเช‚ เชฐเชœเซ‚ เช•เชฐเชพเชฏเซ‡เชฒ เชธเซเชตเชฟเชงเชพเช“ เชชเชนเซ‡เชฒเชพเชฅเซ€ เชœ GCC, Clang เช…เชจเซ‡ Microsoft Visual C++ เช•เชฎเซเชชเชพเช‡เชฒเชฐเซเชธเชฎเชพเช‚ เช†เช‚เชถเชฟเช• เชฐเซ€เชคเซ‡ เชธเชฎเชฐเซเชฅเชฟเชค เช›เซ‡. C++26 เชจเซ‡ เชธเชชเซ‹เชฐเซเชŸ เช•เชฐเชคเซ€ เชฎเชพเชจเช• เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€เช“ เชฌเซเชธเซเชŸ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸเชฎเชพเช‚ เชฒเชพเช—เซ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เช›เซ‡.

เช†เช—เชพเชฎเซ€ เชฌเซ‡ เชฎเชนเชฟเชจเชพเชฎเชพเช‚, เชฎเช‚เชœเซ‚เชฐ เชฅเชฏเซ‡เชฒ เชธเซเชชเชทเซเชŸเซ€เช•เชฐเชฃ เชฆเชธเซเชคเชพเชตเซ‡เชœ เชคเซˆเชฏเชพเชฐเซ€เชจเชพ เชคเชฌเช•เซเช•เชพเชฎเชพเช‚เชฅเซ€ เชชเชธเชพเชฐ เชฅเชถเซ‡, เชœเซ‡ เชฆเชฐเชฎเชฟเชฏเชพเชจ เชœเซ‹เชกเชฃเซ€เชจเซ€ เชญเซ‚เชฒเซ‹ เช…เชจเซ‡ เชŸเชพเช‡เชชเซ‹เชจเซ‡ เชธเซเชงเชพเชฐเชตเชพ เชฎเชพเชŸเซ‡ เชธเช‚เชชเชพเชฆเช•เซ€เชฏ เชธเซเชงเชพเชฐเชพ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡. เชจเชตเซ‡เชฎเซเชฌเชฐเชจเซ€ เชถเชฐเซ‚เช†เชคเชฎเชพเช‚, เชฆเชธเซเชคเชพเชตเซ‡เชœเชจเซเช‚ เช…เช‚เชคเชฟเชฎ เชธเช‚เชธเซเช•เชฐเชฃ เช”เชชเชšเชพเชฐเชฟเช• เชจเชพเชฎ ISO/IEC 14882:2026 เชนเซ‡เช เชณ เชชเซเชฐเช•เชพเชถเชจ เชฎเชพเชŸเซ‡ ISO เชจเซ‡ เชธเชฌเชฎเชฟเชŸ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡.

C++26 เชจเซ€ เชฎเซเช–เซเชฏ เชตเชฟเชถเซ‡เชทเชคเชพเช“:

  • เช•เซ‹เชจเซเชŸเซเชฐเซ‡เช•เซเชŸ เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎเชฟเช‚เช— เชคเชคเซเชตเซ‹ (เช•เซ‹เชจเซเชŸเซเชฐเชพเช•เซเชŸเซเชธ) เช…เชฎเชฒเชฎเชพเช‚ เชฎเซ‚เช•เชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเชพ เช›เซ‡, เชœเซ‡ เชคเชฎเชจเซ‡ เชคเซเชฐเชฃ เชจเชตเชพ เช“เชชเชฐเซ‡เชŸเชฐเซ‹เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เช”เชชเชšเชพเชฐเชฟเช• เช‡เชจเซเชŸเชฐเชซเซ‡เชธ เชธเซเชชเชทเซเชŸเซ€เช•เชฐเชฃเซ‹ เชตเซเชฏเชพเช–เซเชฏเชพเชฏเชฟเชค เช•เชฐเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ‡ เช›เซ‡: เชชเซ‚เชฐเซเชต (เชชเซ‚เชฐเซเชตเชถเชฐเชค), เชชเซ‹เชธเซเชŸ (เชชเซ‹เชธเซเชŸเชถเชฐเชค), เช…เชจเซ‡ เช•เชฐเชพเชฐ_เชเชธเซ‡เชฐเซเชŸ (เชเชธเซ‡เชฐเซเชถเชจ เชšเซ‡เช•). "เชชเซ‚เชฐเซเชต" เช“เชชเชฐเซ‡เชŸเชฐ เชชเซ‚เชฐเซเชตเชถเชฐเชคเซ‹ เชตเซเชฏเชพเช–เซเชฏเชพเชฏเชฟเชค เช•เชฐเซ‡ เช›เซ‡ เชœเซ‡ เช•เซ‹เชฒ เชชเชนเซ‡เชฒเชพเช‚ เชชเซ‚เชฐเซเชฃ เชฅเชตเซ€ เช†เชตเชถเซเชฏเช• เช›เซ‡ (เช‡เชจเชชเซเชŸ เชฎเชพเชจเซเชฏเชคเชพ); "เชชเซ‹เชธเซเชŸ" เชเชตเซ€ เชถเชฐเชคเซ‹ เชตเซเชฏเชพเช–เซเชฏเชพเชฏเชฟเชค เช•เชฐเซ‡ เช›เซ‡ เชœเซ‡ เช…เชฎเชฒ เชชเช›เซ€ เชชเซ‚เชฐเซเชฃ เชฅเชตเซ€ เช†เชตเชถเซเชฏเช• เช›เซ‡ (เช†เช‰เชŸเชชเซเชŸ เช†เชตเชถเซเชฏเช•เชคเชพเช“); เช•เชฐเชพเชฐ_เชเชธเซ‡เชฐเซเชŸ เช…เชชเชตเชพเชฆเซ‹ เชตเชงเชพเชฐเชตเชพ เชฎเชพเชŸเซ‡เชจเซ€ เชถเชฐเชคเซ‹ เชตเซเชฏเชพเช–เซเชฏเชพเชฏเชฟเชค เช•เชฐเซ‡ เช›เซ‡. เช† เชธเซเชตเชฟเชงเชพ GCC 16 เชฎเชพเช‚ เช‰เชชเชฒเชฌเซเชง เชนเชถเซ‡. int f(const int x) pre (x != 1) // เช‡เชจเชชเซเชŸ เช†เชตเชถเซเชฏเช•เชคเชพเช“ เชชเซ‹เชธเซเชŸ (r : r == x && r != 2) // เชชเชฐเชฟเชฃเชพเชฎ เช†เชตเชถเซเชฏเช•เชคเชพเช“; r เช เชชเชฐเชฟเชฃเชพเชฎ เชธเชพเชฅเซ‡เชจเซเช‚ เชฎเซ‚เชฒเซเชฏ เช›เซ‡ { contract_assert (x != 3); return x; }
  • เชฐเชฟเชซเซเชฒเซ‡เช•เซเชถเชจ เชธเชชเซ‹เชฐเซเชŸ เช‰เชฎเซ‡เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซ‹ เช›เซ‡, เชœเซ‡ เช•เชฎเซเชชเชพเช‡เชฒ เชธเชฎเชฏเซ‡ เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎ เชคเชคเซเชตเซ‹เชจเซเช‚ เชจเชฟเชฐเซ€เช•เซเชทเชฃ เช…เชจเซ‡ เชธเช‚เชถเซ‹เชงเชฟเชค เช•เชฐเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ‡ เช›เซ‡. เชตเซเชฏเชพเช•เชฐเชฃ เชฐเชšเชจเชพ เชตเชฟเชถเซ‡ เชฎเซ‡เชŸเชพเชฎเชพเชนเชฟเชคเซ€ เชฎเซ‡เชณเชตเชตเชพ เชฎเชพเชŸเซ‡ เชจเชตเชพ เช“เชชเชฐเซ‡เชŸเชฐเซ‹ "^^" เช…เชจเซ‡ เชตเซเชฏเชธเซเชค เชชเชฐเชฟเชตเชฐเซเชคเชจ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ "[:โ€ฆ:]" เช‰เชฎเซ‡เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเชพ เช›เซ‡. เชจเชฟเชฐเซ€เช•เซเชทเชฃ เชฆเชฐเชฎเชฟเชฏเชพเชจ เชฎเซ‡เชณเชตเซ‡เชฒเซ€ เชฎเชพเชนเชฟเชคเซ€เชจเซ‡ เชฐเซ‚เชชเชพเช‚เชคเชฐเชฟเชค เช•เชฐเชตเชพ เช…เชจเซ‡ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ std::meta เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€ เชชเซเชฐเชธเซเชคเชพเชตเชฟเชค เช›เซ‡, เช…เชจเซ‡ เชธเซเชฅเชฟเชฐเชพเช‚เช•เซ‹ เชธเชพเชฅเซ‡ เช—เชฃเชคเชฐเซ€เช“ เชœเซ‡เชตเซ€ เช•เซเชทเชฎเชคเชพเช“ เช‰เชชเชฒเชฌเซเชง เช›เซ‡. GCC 16 เชฎเชพเช‚ เชฐเชฟเชซเซเชฒเซ‡เช•เซเชถเชจ เชธเชชเซ‹เชฐเซเชŸ เช‰เชฎเซ‡เชฐเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡. constexpr int i = 42, j = 42; constexpr std::meta::info r = ^^i, s = ^^i; static_assert(r == r && r == s); static_assert(^^i != ^^j); // 'i' เช…เชจเซ‡ 'j' เชจเชพ เชฎเซ‚เชฒเซเชฏเซ‹ เช…เชฒเช— เช…เชฒเช— เช›เซ‡. static_assert(constant_of(^^i) == constant_of(^^j)); // 'i' เช…เชจเซ‡ 'j' เชเช• เชœ เช›เซ‡ static_assert(^^i != std::meta::reflect_constant(42)); // เชฎเซ‚เชฒเซเชฏ 42 เชฅเซ€ เช…เชฒเช—
  • เชฐเซ‡เช—เซเชฏเซเชฒเชฐ เชซเซ‹เชฐ เชฒเซ‚เชชเชจเซ€ เชถเซˆเชฒเซ€เชฎเชพเช‚ เช•เชฎเซเชชเชพเช‡เชฒ เชธเชฎเชฏเซ‡ เชชเซ‡เชฐเชพเชฎเซ€เชŸเชฐ เชชเซ‡เช•, เชŸเซเชฏเซเชชเชฒ เชœเซ‡เชตเชพ เช‘เชฌเซเชœเซ‡เช•เซเชŸเซเชธ เช…เชจเซ‡ เชฐเชฟเชซเซเชฒเซ‡เช•เซเชถเชจ เชฐเชฟเชเชฒเซเชŸเซเชธ (เชฎเซ‡เชŸเชพเช“เชฌเซเชœเซ‡เช•เซเชŸเซเชธ) เชœเซ‡เชตเชพ เชคเชคเซเชตเซ‹ เชชเชฐ เชชเซเชจเชฐเชพเชตเชฐเซเชคเชฟเชค เชฅเชตเชพ เชฎเชพเชŸเซ‡ 'เชŸเซ‡เชฎเซเชชเชฒเซ‡เชŸ เชซเซ‹เชฐ' เช‰เชฎเซ‡เชฐเซเชฏเซเช‚. 'เชŸเซ‡เชฎเซเชชเชฒเซ‡เชŸ เชซเซ‹เชฐ' เชšเชฒเชพเชตเชคเซ€ เชตเช–เชคเซ‡, เชฆเชฐเซ‡เช• เชเชฒเชฟเชฎเซ‡เชจเซเชŸ เชฎเชพเชŸเซ‡ เชฒเซ‚เชช เชฌเซ‹เชกเซ€ เชตเชฟเชธเซเชคเซƒเชค เชฅเชพเชฏ เช›เซ‡, เช…เชจเซ‡ เชฆเชฐเซ‡เช• เชชเซเชจเชฐเชพเชตเซƒเชคเซเชคเชฟ เชเช• เช…เชฒเช— เชธเซเช•เซ‹เชชเชฎเชพเช‚ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ เชœเซ‡เชฎเชพเช‚ เชฒเซ‚เชชเชฎเชพเช‚ เชฌเชฆเชฒเชพเชคเซเช‚ เชšเชฒ เชธเชคเชค เชนเซ‹เชฏ เช›เซ‡. เชชเซเชฐเชคเชฟเชฌเชฟเช‚เชฌเชจเชพ เชธเช‚เชฆเชฐเซเชญเชฎเชพเช‚, 'เชŸเซ‡เชฎเซเชชเชฒเซ‡เชŸ เชซเซ‹เชฐ' เชจเซ‹ เช‰เชชเชฏเซ‹เช— เชตเชฐเซเช—เซ‹ เช…เชฅเชตเชพ เชเชจเชฎเซเชธเชจเชพ เช—เซเชฃเชงเชฐเซเชฎเซ‹ เชชเชฐ เชชเซเชจเชฐเชพเชตเชฐเซเชคเชฟเชค เชฅเชตเชพ เชฎเชพเชŸเซ‡ เชฅเชˆ เชถเช•เซ‡ เช›เซ‡. เช† เชธเซเชตเชฟเชงเชพ GCC 16 เชฎเชพเช‚ เช‰เชชเชฒเชฌเซเชง เชนเชถเซ‡. void f() { template for (constexpr int I : std::array{1, 2, 3}) { static_assert(I < 4); } } เช†เชฎเชพเช‚ เชตเชฟเชธเซเชคเซƒเชค เชฅเชถเซ‡: void f() { { constexpr auto&& __range = std::array{1, 2, 3}; constexpr auto __begin = __range.begin(); constexpr เช“เชŸเซ‹ __expansion-size = __range.end() โ€” __begin; // 3 { constexpr int I = *(__begin + 0); static_assert(I < 4); } { constexpr int I = *(__begin + 1); static_assert(I < 4); } { constexpr int I = *(__begin + 2); static_assert(I < 4); } } }
  • เช…เชธเซเชฎเซ‡เชณ เช…เชจเซ‡ เชธเชฎเชพเช‚เชคเชฐ เช•เซ‹เชก เชเช•เซเชเซ‡เช•เซเชฏเซเชถเชจ เชฎเชพเชŸเซ‡ std::เชเช•เซเชเซ‡เช•เซเชฏเซเชถเชจ เชซเซเชฐเซ‡เชฎเชตเชฐเซเช• เช‰เชฎเซ‡เชฐเซเชฏเซเช‚. เชคเซ‡ เชถเซ‡เชกเซเชฏเซ‚เชฒเชฐ เช‘เชฌเซเชœเซ‡เช•เซเชŸเซเชธ เชชเซ‚เชฐเชพ เชชเชพเชกเซ‡ เช›เซ‡, เชœเซ‡ เชตเชฐเซเช• เชถเซ‡เชกเซเชฏเซ‚เชฒเชฐ (เชฅเซเชฐเซ‡เชก, เชฅเซเชฐเซ‡เชก เชชเซ‚เชฒ, GPU, เช‡เชตเซ‡เชจเซเชŸ เชฒเซ‚เชช) เชจเซ‡ เชตเซเชฏเชพเช–เซเชฏเชพเชฏเชฟเชค เช•เชฐเซ‡ เช›เซ‡, เชธเซ‡เชจเซเชกเชฐ เช‘เชฌเซเชœเซ‡เช•เซเชŸเซเชธ, เชœเซ‡ เชเช•เซเชเซ‡เช•เซเชฏเซเชŸ เช•เชฐเชตเชพเชจเชพ เช•เชพเชฐเซเชฏเชจเซ‡ เชตเซเชฏเชพเช–เซเชฏเชพเชฏเชฟเชค เช•เชฐเซ‡ เช›เซ‡, เช…เชจเซ‡ เชฐเซ€เชธเซ€เชตเชฐ เช‘เชฌเซเชœเซ‡เช•เซเชŸเซเชธ, เชœเซ‡ เชชเชฐเชฟเชฃเชพเชฎเชจเซ‡ เชนเซ‡เชจเซเชกเชฒ เช•เชฐเซ‡ เช›เซ‡. namespace เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ std::execution; scheduler auto sch = thread_pool.scheduler(); sender auto begin = schedule(sch); sender auto hi = then(begin, []{ std::cout < "เชนเซ‡เชฒเซ‹ เชตเชฐเซเชฒเซเชก! เช‡เชจเซเชŸ เชฐเชพเช–เซ‹."; เชฐเซ€เชŸเชฐเซเชจ 13; }); sender auto add_42 = then(hi, [](int arg) { return arg + 42; }); auto [i] = this_thread::sync_wait(add_42).value();
  • เชธเซเชŸเชพเชจเซเชกเชฐเซเชก C++ เชŸเชพเช‡เชช เชธเชฟเชธเซเชŸเชฎเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ AVX-512 เช…เชจเซ‡ NEON เชœเซ‡เชตเชพ SIMD เชธเซ‚เชšเชจเชพ เชธเซ‡เชŸเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชกเซ‡เชŸเชพ เช“เชชเชฐเซ‡เชถเชจเซเชธเชจเซ‡ เชธเชฎเชพเช‚เชคเชฐ เชฌเชจเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ std::simd เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€ เช‰เชฎเซ‡เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เช›เซ‡. a = {เซง.เซฆf, เซจ.เซฆf, เซฉ.เซฆf, เซช.เซฆf}; std::simd b = {5.0f, 6.0f, 7.0f, 8.0f}; std::simd เชชเชฐเชฟเชฃเชพเชฎ = a + b;
  • เชšเชฒ-เช•เชฆเชจเชพ เชตเซ‡เช•เซเชŸเชฐ (เชเชฐเซ‡) std::inplace_vector เชจเซเช‚ เช…เชฎเชฒเซ€เช•เชฐเชฃ เชชเซเชฐเชธเซเชคเชพเชตเชฟเชค เช›เซ‡. เชคเซ‡ เชธเซเชŸเซ‡เช• เชชเชฐ เชซเชพเชณเชตเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เชœเซ‡เชจเซเช‚ เช•เชฆ เช•เชฎเซเชชเชพเช‡เชฒ เชธเชฎเชฏเซ‡ เชจเช•เซเช•เซ€ เชฅเชพเชฏ เช›เซ‡. API std::vector เชœเซ‡เชตเซเช‚ เชœ เช›เซ‡, เชชเชฐเช‚เชคเซ เชเชฐเซ‡ เชคเชคเซเชตเซ‹ เช†เช‚เชคเชฐเชฟเช• เชฐเซ€เชคเซ‡ เชธเช‚เช—เซเชฐเชนเชฟเชค เชฅเชพเชฏ เช›เซ‡, เชนเซ€เชช เชชเชฐ เชจเชนเซ€เช‚. inplace_vector a(10); inplace_vector b(std::move(a)); assert(a.size() == 10);
  • เช•เซ‹เชกเชฎเชพเช‚ เชฌเชพเชˆเชจเชฐเซ€ เชธเช‚เชธเชพเชงเชจเซ‹เชจเซ‡ เชเชฎเซเชฌเซ‡เชก เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ "#embed" เชกเชพเชฏเชฐเซ‡เช•เซเชŸเชฟเชต เช‰เชฎเซ‡เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซ‹ เช›เซ‡. const unsigned char icon_display_data[] = { #embed "art.png" };
  • เชœเซเชฏเชพเชฐเซ‡ constexpr เชธเช‚เชฆเชฐเซเชญเชฎเชพเช‚ เชญเซ‚เชฒเซ‹ เชฅเชพเชฏ เช›เซ‡ เชคเซเชฏเชพเชฐเซ‡ เช•เชฎเซเชชเชพเช‡เชฒ เชธเชฎเชฏเซ‡ เช…เชชเชตเชพเชฆเซ‹ เชœเชจเชฐเซ‡เชŸ เช•เชฐเชตเชพ เช…เชจเซ‡ เชนเซ‡เชจเซเชกเชฒ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช‰เชฎเซ‡เชฐเชพเชฏเซ‡เชฒ เชธเชชเซ‹เชฐเซเชŸ. constexpr std::optional checked_divide(unsigned n, unsigned d) { try { return divide(n, d); } catch (...) { return std::nullopt; } } constexpr date parse_date(std::string_view input) { auto [correct, year, month, day] = ctre::match<โ€œ([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})โ€>(input); เชœเซ‹ (!correct) { throw incorrect_date{input}; } return build_date(year, month, day); }
  • std::hive เชกเซ‡เชŸเชพ เชธเซเชŸเซเชฐเช•เซเชšเชฐ เช…เชจเช“เชฐเซเชกเชฐเซเชก เชกเซ‡เชŸเชพ เชธเซเชŸเซ‹เชฐเซ‡เชœ เช…เชจเซ‡ เชกเชฟเชฒเซ€เชŸ เช•เชฐเซ‡เชฒเชพ เชเชฒเชฟเชฎเซ‡เชจเซเชŸเซเชธ เชฆเซเชตเชพเชฐเชพ เชฎเซเช•เซเชค เชฅเชฏเซ‡เชฒ เชฎเซ‡เชฎเชฐเซ€เชจเชพ เชชเซเชจเชƒเช‰เชชเชฏเซ‹เช— เชฎเชพเชŸเซ‡ เช…เชฎเชฒเชฎเชพเช‚ เชฎเซ‚เช•เชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เช›เซ‡. เช† เชธเซเชŸเซเชฐเช•เซเชšเชฐเชจเซ‡ เชนเชพเช‡-เช‡เชจเซเชŸเซ‡เชจเซเชธเชฟเชŸเซ€ เชเชกเชฟเชถเชจ เช…เชจเซ‡ เชกเชฟเชฒเซ€เชŸเซ‡เชถเชจ เชธเชพเชฅเซ‡ เชตเชฐเซเช•เชฒเซ‹เชก เชฎเชพเชŸเซ‡ เช‘เชชเซเชŸเชฟเชฎเชพเช‡เช เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เช›เซ‡ เชœเซ‡เชฎเชพเช‚ เชเชฒเชฟเชฎเซ‡เชจเซเชŸเซเชธ เชฎเชจเชธเซเชตเซ€ เช•เซเชฐเชฎเชฎเชพเช‚ เชนเซ‹เชฏ เช›เซ‡. เชเชฐเซ‡เชฅเซ€ เชตเชฟเชชเชฐเซ€เชค, std::hive เชฎเชพเช‚ เชเชฒเชฟเชฎเซ‡เชจเซเชŸ เชกเชฟเชฒเซ€เชŸ เช•เชฐเชตเชพเชฅเซ€ เช…เชจเซเชฏ เชเชฒเชฟเชฎเซ‡เชจเซเชŸเซเชธ เชฌเชฆเชฒเชพเชคเชพ เชจเชฅเซ€, เชชเชฐเช‚เชคเซ เชกเชฟเชฒเซ€เชŸ เช•เชฐเซ‡เชฒเชพ เชเชฒเชฟเชฎเซ‡เชจเซเชŸเชจเซ‡ เช–เชพเชฒเซ€ เชคเชฐเซ€เช•เซ‡ เชšเชฟเชนเซเชจเชฟเชค เช•เชฐเซ‡ เช›เซ‡, เช…เชจเซ‡ เชชเช›เซ€ เชœเซเชฏเชพเชฐเซ‡ เชจเชตเซเช‚ เชเชฒเชฟเชฎเซ‡เชจเซเชŸ เช‰เชฎเซ‡เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ เชคเซเชฏเชพเชฐเซ‡ เช–เชพเชฒเซ€ เชธเซเชฅเชพเชจ เชญเชฐเซ‡ เช›เซ‡.
  • เชฐเซ‡เช–เซ€เชฏ เชฌเซ€เชœเช—เชฃเชฟเชค เชฎเชพเชŸเซ‡ BLAS-เช†เชงเชพเชฐเชฟเชค API เชธเชพเชฅเซ‡ std::linalg เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€ เช‰เชฎเซ‡เชฐเซ€.
  • เชนเซ‡เชเชพเชฐเซเชก เชชเซ‹เชˆเชจเซเชŸเชฐ เชธเชฟเช‚เช•เซเชฐเชจเชพเช‡เชเซ‡เชถเชจ เชฎเชฟเช•เซ‡เชจเชฟเชเชฎ เชฎเชพเชŸเซ‡ เช‰เชฎเซ‡เชฐเชพเชฏเซ‡เชฒ เชธเชชเซ‹เชฐเซเชŸ, เชœเซ‡ เชฒเซ‹เช•เซ€เช‚เช— เชตเชฟเชจเชพ เช…เชจเซเชฏ เชฅเซเชฐเซ‡เชกเซ‹ เชฆเซเชตเชพเชฐเชพ เชเช•เซเชธเซ‡เชธ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเชคเซ€ เชตเชธเซเชคเซเช“ เชฎเชพเชŸเซ‡ เชฎเซ‡เชฎเชฐเซ€ เชฐเชฟเชฒเซ€เช เชฅเชตเชพเชฅเซ€ เช…เชŸเช•เชพเชตเซ‡ เช›เซ‡. เชœเซเชฏเชพเชฐเซ‡ เช•เซ‹เชˆ เช‘เชฌเซเชœเซ‡เช•เซเชŸ เชกเชฟเชฒเซ€เชŸ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เชคเซเชฏเชพเชฐเซ‡ เชคเซ‡เชจเซ‡ เชซเช•เซเชค เชกเชฟเชฒเซ€เชŸ เชคเชฐเซ€เช•เซ‡ เชšเชฟเชนเซเชจเชฟเชค เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เชชเชฐเช‚เชคเซ เช‘เชฌเซเชœเซ‡เช•เซเชŸ เชฆเซเชตเชพเชฐเชพ เช•เชฌเชœเซ‡ เช•เชฐเซ‡เชฒเซ€ เชฎเซ‡เชฎเชฐเซ€ เชซเช•เซเชค เชคเซเชฏเชพเชฐเซ‡ เชœ เชฐเชฟเชฒเซ€เช เชฅเชพเชฏ เช›เซ‡ เชœเซเชฏเชพเชฐเซ‡ เชฌเชงเชพ เชฅเซเชฐเซ‡เชกเซ‹ เช‘เชฌเซเชœเซ‡เช•เซเชŸเชจเซ€ เชเช•เซเชธเซ‡เชธ เชฆเชฐเชฎเชฟเชฏเชพเชจ เชนเซ‡เชเชพเชฐเซเชก เชชเซ‹เชˆเชจเซเชŸเชฐ เชธเซ‡เชŸ เชฐเชฟเชฒเซ€เช เช•เชฐเซ‡ เช›เซ‡.
  • RCU (เชฐเซ€เชก-เช•เซ‹เชชเซ€ เช…เชชเชกเซ‡เชŸ) เชธเชฟเช‚เช•เซเชฐเชจเชพเช‡เชเซ‡เชถเชจ เชฎเชฟเช•เซ‡เชจเชฟเชเชฎ เชฎเชพเชŸเซ‡ เช‰เชฎเซ‡เชฐเชพเชฏเซ‡เชฒ เชธเชชเซ‹เชฐเซเชŸ. เชฐเชพเช‡เชŸ เช“เชชเชฐเซ‡เชถเชจเซเชธ เช‘เชฌเซเชœเซ‡เช•เซเชŸเชจเซเช‚ เชจเชตเซเช‚ เช‡เชจเซเชธเซเชŸเชจเซเชธ เชฌเชจเชพเชตเซ‡ เช›เซ‡, เชœเซเชฏเชพเชฐเซ‡ เชฐเซ€เชก เช“เชชเชฐเซ‡เชถเชจเซเชธ เชฌเซเชฒเซ‹เช• เช•เชฐเชคเชพ เชจเชฅเซ€, เชชเชฐเช‚เชคเซ เชœเซ‚เชจเชพ เช‡เชจเซเชธเซเชŸเชจเซเชธ เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเชตเชพเชจเซเช‚ เชšเชพเชฒเซ เชฐเชพเช–เซ‡ เช›เซ‡. เชซเซ‡เชฐเชซเชพเชฐ เชชเซ‚เชฐเซเชฃ เชฅเชฏเชพ เชชเช›เซ€, เชจเชตเซเช‚ เช‡เชจเซเชธเซเชŸเชจเซเชธ เชธเช•เซเชฐเชฟเชฏ เชฌเชจเซ‡ เช›เซ‡, เช…เชจเซ‡ เชคเซ‡เชจเชพ เชชเชฐ เชจเชตเชพ เชฐเซ€เชก เช“เชชเชฐเซ‡เชถเชจเซเชธ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เชœเซเชฏเชพเชฐเซ‡ เชœเซ‚เชจเชพ เช‡เชจเซเชธเซเชŸเชจเซเชธเชจเซ‡ เชฅเซเชฐเซ‡เชกเซ‹ เชตเชพเช‚เชšเซเชฏเชพ เชชเช›เซ€ เช•เชพเชขเซ€ เชจเชพเช–เชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡.
  • เชฎเชพเชจเช• เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€เชจเซ€ เชธเชฒเชพเชฎเชคเซ€เชจเซ‡ เชฎเชœเชฌเซ‚เชค เชฌเชจเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เชซเซ‡เชฐเชซเชพเชฐเซ‹ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเชพ เช›เซ‡, เชœเซ‡เชฎ เช•เซ‡ เชฎเชพเชจเซเชฏ เชฎเซ‚เชฒเซเชฏเซ‹ เช…เชจเซ‡ เชฌเชซเชฐ เช“เชตเชฐเชฐเชจเซเชธ เชฎเชพเชŸเซ‡ เชคเชชเชพเชธ เช•เชฐเชตเซ€. เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, "constexpr เชธเช‚เชฆเชฐเซเชญ เช“เชชเชฐเซ‡เชŸเชฐ[](size_type idx) const;" เชคเชคเซเชตเชจเซ‡ เชเช•เซเชธเซ‡เชธ เช•เชฐเชคเซ€ เชตเช–เชคเซ‡, "idx <size()" เชธเซเชฅเชฟเชคเชฟ เชฎเชพเชŸเซ‡ เชšเซ‡เช• เช‰เชฎเซ‡เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡.
  • เช•เชฎเซเชชเชพเช‡เชฒ เชธเชฎเชฏเซ‡ เชชเซ‚เชฐเซเชต-เชซเชพเชณเชตเซ‡เชฒ เชฎเซ‡เชฎเชฐเซ€เชฎเชพเช‚ เช‘เชฌเซเชœเซ‡เช•เซเชŸ เชฎเซ‚เช•เชตเชพ เชฎเชพเชŸเซ‡ เชจเชตเชพ เช“เชชเชฐเซ‡เชŸเชฐ (เชชเซเชฒเซ‡เชธเชฎเซ‡เชจเซเชŸ เชจเซเชฏเซ‚) เชจเชพ เชตเซ‡เชฐเชฟเช…เชจเซเชŸ เชธเชพเชฅเซ‡ constexpr เช•เซ€เชตเชฐเซเชกเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเซ€ เช•เซเชทเชฎเชคเชพ เชชเซเชฐเชฆเชพเชจ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เช›เซ‡.
  • "constexpr" เชธเช‚เชฆเชฐเซเชญเชฎเชพเช‚ เชธเซเชŸเซเชฐเช•เซเชšเชฐเซเชก เชฌเชพเชˆเชจเซเชกเชฟเช‚เช—เซเชธ เชฎเชพเชŸเซ‡ เชธเชชเซ‹เชฐเซเชŸ เช‰เชฎเซ‡เชฐเซเชฏเซ‹, เชœเซ‡เชจเซ‹ เช…เชฐเซเชฅ เช เชฅเชฏเซ‹ เช•เซ‡ เช•เซ‹เชจเซเชธเซเชŸเชจเซเชŸ เชเช•เซเชธเชชเซเชฐเซ‡เชถเชจเชจเชพ เชธเช‚เชฆเชฐเซเชญเซ‹ เชนเชตเซ‡ เชชเซ‹เชคเซ‡ เช•เซ‹เชจเซเชธเซเชŸเชจเซเชŸ เชเช•เซเชธเชชเซเชฐเซ‡เชถเชจ เชนเซ‹เชˆ เชถเช•เซ‡ เช›เซ‡. เชธเชชเซ‹เชฐเซเชŸ เชเชฐเซ‡ เช…เชจเซ‡ เชธเชฐเชณ เชธเซเชŸเซเชฐเช•เซเชšเชฐเซเชธ เชฎเชพเชŸเซ‡ เชฒเชพเช—เซ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซ‹ เช›เซ‡. constexpr int arr[] = {1, 2}; constexpr auto [x, y] = arr;
  • เชธเซเชŸเซเชฐเช•เซเชšเชฐเซเชก เชฌเชพเชˆเชจเซเชกเชฟเช‚เช—เซเชธ เชนเชตเซ‡ "..." เชตเชพเช•เซเชฏเชฐเชšเชจเชพเชจเซ‡ เชธเชชเซ‹เชฐเซเชŸ เช•เชฐเซ‡ เช›เซ‡ เชœเซ‡ เชชเซ‡เช•เชจเซ‡ เชธเซเชชเชทเซเชŸ เช•เชฐเซ‡ เช›เซ‡ เชœเซ‡ เชธเซ‹เช‚เชชเชฃเซ€ เช•เซเชฐเชฎเชฎเชพเช‚ เชฌเชพเช•เซ€เชจเชพ เชคเชคเซเชตเซ‹เชจเซ‡ เช•เซ‡เชชเซเชšเชฐ เช•เชฐเซ‡ เช›เซ‡. auto [x,y,z] = f(); // เชšเชฒ x, y, z เชฎเชพเช‚ f() เชฆเซเชตเชพเชฐเชพ เชชเชฐเชค เช•เชฐเชพเชฏเซ‡เชฒเชพ เชคเซเชฐเชฃ เช˜เชŸเช•เซ‹ เชนเชถเซ‡. auto [...xs] = f(); // เชชเซ‡เช•เซ‡เชœ xs เชฎเชพเช‚ f() เชฆเซเชตเชพเชฐเชพ เชชเชฐเชค เช•เชฐเชพเชฏเซ‡เชฒเชพ เชฌเชงเชพ เช˜เชŸเช•เซ‹ เชนเชถเซ‡. auto [x, ...rest] = f(); // x เชฎเชพเช‚ เชชเชนเซ‡เชฒเซเช‚ เชคเชคเซเชต เชนเชถเซ‡, เช…เชจเซ‡ เชฌเชพเช•เซ€เชจเชพเชฎเชพเช‚ เชฌเชพเช•เซ€เชจเซเช‚ เชนเชถเซ‡. auto [x, y, ...rest] = f(); // x เชฎเชพเช‚ เชชเชนเซ‡เชฒเซเช‚ เชคเชคเซเชต เชนเชถเซ‡, y เชฎเชพเช‚ เชฌเซ€เชœเซเช‚ เชนเชถเซ‡, เช…เชจเซ‡ เชฌเชพเช•เซ€เชจเชพเชฎเชพเช‚ เชคเซเชฐเซ€เชœเซเช‚ เชนเชถเซ‡. auto [x, ...rest, z] = f(); // x เชฎเชพเช‚ เชชเชนเซ‡เชฒเซเช‚ เชคเชคเซเชต เชนเชถเซ‡, เชฌเชพเช•เซ€เชจเชพเชฎเชพเช‚ เชฌเซ€เชœเซเช‚ เชนเชถเซ‡, เช…เชจเซ‡ z เชฎเชพเช‚ เชคเซเชฐเซ€เชœเซเช‚ เชนเชถเซ‡.
  • "เชŸเซเชฐเชฟเชตเชฟเชฏเชฒ เชฐเชฟเชฒเซ‹เช•เซ‡เชŸเซ‡เชฌเชฟเชฒเชฟเชŸเซ€" เชชเซเชฐเช•เชพเชฐเชจเชพ เชฎเชพเชŸเซ‡ เช‰เชฎเซ‡เชฐเชพเชฏเซ‡เชฒ เชธเชชเซ‹เชฐเซเชŸ, เชœเซ‡ เช•เชจเซเชธเซเชŸเซเชฐเช•เซเชŸเชฐ เช…เชฅเชตเชพ เชกเชฟเชธเซเชŸเซเชฐเช•เซเชŸเชฐเชจเซ‡ เชฌเซ‹เชฒเชพเชตเซเชฏเชพ เชตเชฟเชจเชพ เชฎเซ‡เชฎเชฐเซ€เชฎเชพเช‚ เช•เซเชฒเซ‹เชจ เช•เชฐเซ€เชจเซ‡ เช†เชชเซ‡เชฒ เชชเซเชฐเช•เชพเชฐเชจเชพ เช‘เชฌเซเชœเซ‡เช•เซเชŸเซเชธเชจเซ€ เชนเชฟเชฒเชšเชพเชฒเชจเซ‡ เช‘เชชเซเชŸเชฟเชฎเชพเช‡เช เช•เชฐเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ‡ เช›เซ‡. เชฎเซ‡เชฎเซเชฌเชฐเชตเชพเช‡เช_เชŸเซเชฐเชฟเชตเชฟเชฏเชฒเชฒเซ€_เชฐเชฟเชฒเซ‹เช•เซ‡เชŸเซ‡เชฌเชฒ เช…เชจเซ‡ เชฎเซ‡เชฎเซเชฌเชฐเชตเชพเช‡เช_เชฐเชฟเชชเซเชฒเซ‡เชธเซ‡เชฌเชฒ เชชเซเชฐเซ‹เชชเชฐเซเชŸเซ€เช เชตเชฐเซเช—เซ‹ เชฎเชพเชŸเซ‡ เชฒเชพเช—เซ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เช…เชจเซ‡ เชเช• เช…เชฅเชตเชพ เชตเชงเซ เช‘เชฌเซเชœเซ‡เช•เซเชŸเซเชธเชจเซ€ เชจเซ€เชšเซ€-เชธเซเชคเชฐเชจเซ€ เชนเชฟเชฒเชšเชพเชฒ เชฎเชพเชŸเซ‡ trivially_relocate_at เช…เชจเซ‡ trivially_relocate เชซเช‚เช•เซเชถเชจ เช‰เชฎเซ‡เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡.
  • เช—เซเชฒเซ‹เชฌเชฒ เชฎเซ‹เชกเซเชฏเซเชฒ เชธเชพเชฅเซ‡ main() เชซเช‚เช•เซเชถเชจ เชœเซ‹เชกเชตเชพ เช…เชจเซ‡ เชจเชพเชฎเชพเช‚เช•เชฟเชค เชฎเซ‹เชกเซเชฏเซเชฒเซ‹เชฎเชพเช‚ main() เชซเช‚เช•เซเชถเชจ เชตเซเชฏเชพเช–เซเชฏเชพเชฏเชฟเชค เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชธเชชเซ‹เชฐเซเชŸ เชฒเชพเช—เซ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซ‹ เช›เซ‡.
  • เชšเชฒ เช“เชชเชฐเซ‡เชŸเชฐ "เชฎเชฟเชคเซเชฐ" ("เชฎเชฟเชคเซเชฐ Ts...") เช‰เชฎเซ‡เชฐเซเชฏเซเช‚.
  • เชธเซเชŸเซเชฐเช•เซเชšเชฐเซเชก เชฌเชพเชˆเชจเซเชกเชฟเช‚เช—เซเชธ เชฎเชพเชŸเซ‡ เช…เชฎเชฒเชฎเชพเช‚ เชฎเซ‚เช•เชพเชฏเซ‡เชฒ เชตเชฟเชถเซ‡เชทเชคเชพเช“;
  • '= delete("reason")' เชตเชพเช•เซเชฏเชฐเชšเชจเชพ เช‰เชฎเซ‡เชฐเซ€.
  • เชฎเซ‚เชณเชญเซ‚เชค เช…เช•เซเชทเชฐ เชธเชฎเซ‚เชนเชฎเชพเช‚ "@", "$", เช…เชจเซ‡ "`" เชถเชพเชฎเซ‡เชฒ เช›เซ‡.
  • if เช…เชจเซ‡ switch เชธเซเชŸเซ‡เชŸเชฎเซ‡เชจเซเชŸเชฎเชพเช‚ เชถเชฐเชค เชคเชฐเซ€เช•เซ‡ เชธเซเชŸเซเชฐเช•เซเชšเชฐเซเชก เชฌเชพเช‡เชจเซเชกเชฟเช‚เช—เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเซ€ เช•เซเชทเชฎเชคเชพ เชชเซ‚เชฐเซ€ เชชเชพเชกเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เช›เซ‡.
  • เชเช• เช…เชตเช•เชพเชถเชฎเชพเช‚ "_" เชจเชพเชฎ เชธเชพเชฅเซ‡ เช…เชจเซ‡เช• เชชเซเชฒเซ‡เชธเชนเซ‹เชฒเซเชกเชฐ เชšเชฒเซ‹เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเซ€ เช•เซเชทเชฎเชคเชพ เช‰เชฎเซ‡เชฐเชพเชˆ, เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชจเซ€เชšเซ‡เชจเชพ เชฌเชพเช‚เชงเช•เชพเชฎเซ‹ เชนเชตเซ‡ เชฏเซ‹เช—เซเชฏ เช›เซ‡: struct S { int _, _; }; void func() { int _, _; } void other() { int _; // เช…เช—เชพเช‰ เชเช• เชšเซ‡เชคเชตเชฃเซ€ -Wunused เชฎเซ‹เชกเชฎเชพเช‚ เชชเซเชฐเชฆเชฐเซเชถเชฟเชค เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เชนเชคเซ€ }
  • เชเชตเชพ เชธเช‚เชฆเชฐเซเชญเชฎเชพเช‚ เชธเซเชŸเซเชฐเชฟเช‚เช— เชฒเชฟเชŸเชฐเชฒเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเซ‹ เชถเช•เซเชฏ เช›เซ‡ เชœเซ‡เชฎเชพเช‚ เชคเซ‡เช“ เช…เช•เซเชทเชฐ เชเชฐเซ‡เชจเซ‡ เชชเซเชฐเชพเชฐเช‚เชญ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช‰เชชเชฏเซ‹เช—เชฎเชพเช‚ เชฒเซ‡เชตเชพเชคเชพ เชจเชฅเซ€ เช…เชจเซ‡ เชชเชฐเชฟเชฃเชพเชฎเซ€ เช•เซ‹เชกเชฎเชพเช‚ เชธเชฎเชพเชชเซเชค เชฅเชคเชพ เชจเชฅเซ€, เชชเชฐเช‚เชคเซ เชกเชพเชฏเช—เซเชจเซ‹เชธเซเชŸเชฟเช• เชธเช‚เชฆเซ‡เชถเชพเช“ เช…เชจเซ‡ เชชเซเชฐเซ€เชชเซเชฐเซ‹เชธเซ‡เชธเชฟเช‚เช— เชฎเชพเชŸเซ‡ เช•เชฎเซเชชเชพเช‡เชฒ เชธเชฎเชฏเซ‡ เชœ เช‰เชชเชฏเซ‹เช—เชฎเชพเช‚ เชฒเซ‡เชตเชพเชฏ เช›เซ‡, เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชชเชฐเชฟเชฎเชพเชฃเซ‹ เชคเชฐเซ€เช•เซ‡ เชจเชฟเชฐเซเชฆเซ‡เชถเซ‹ เช…เชจเซ‡ เชตเชฟเชถเซ‡เชทเชคเชพเช“ _Pragma, asm, extern, static_asssert, [[เชจเชพเชชเชธเช‚เชฆ เช•เชฐเซ‡เชฒ]] เช…เชจเซ‡ [[nodiscard]].
  • เชฌเชฟเชฒเซเชŸ-เช‡เชจ เชซเช‚เช•เซเชถเชจ เช‰เชฎเซ‡เชฐเซเชฏเชพ: เชฏเซเชจเชฟเชฏเชจเชฎเชพเช‚ เช•เซ‹เชˆ เชตเชฟเช•เชฒเซเชช เชธเช•เซเชฐเชฟเชฏ เช›เซ‡ เช•เซ‡ เชจเชนเซ€เช‚ เชคเซ‡ เชคเชชเชพเชธเชตเชพ เชฎเชพเชŸเซ‡ "__builtin_is_within_lifetime" เช…เชจเซ‡ เชฌเซ‡เช เช•เซเชฒเชพเชธ เชตเชฐเซเชšเซเชฏเซเช…เชฒ เช›เซ‡ เช•เซ‡ เชจเชนเซ€เช‚ เชคเซ‡ เชคเชชเชพเชธเชตเชพ เชฎเชพเชŸเซ‡ "__builtin_is_virtual_base_of".
  • เช…เชตเซเชฏเชพเช–เซเชฏเชพเชฏเชฟเชค เชตเชฐเซเชคเชจ เชตเชฟเชจเชพ เชคเซเชšเซเช› เช…เชจเช‚เชค เชฒเซ‚เชชเซเชธ เช…เชฎเชฒเชฎเชพเช‚ เชฎเซ‚เช•เซเชฏเชพ.
  • เช…เชชเซ‚เชฐเซเชฃ เชชเซเชฐเช•เชพเชฐเชจเชพ เชชเซ‹เช‡เชจเซเชŸเชฐเชจเซ‡ เช•เชพเชขเซ€ เชจเชพเช–เชคเซ€ เชตเช–เชคเซ‡ เชญเซ‚เชฒ เชชเซเชฐเชฆเชฐเซเชถเชฟเชค เชฅเชพเชฏ เช›เซ‡ เชคเซ‡เชจเซ€ เช–เชพเชคเชฐเซ€ เช•เชฐเซ€.
  • เชชเซ‚เชฐเซเชตเชตเชฐเซเชคเซ€ เช…เชฒเซเชชเชตเชฟเชฐเชพเชฎ เชตเชฟเชจเชพ เชเชฒเชฟเชชเซเชธเชฟเชธ เชธเชพเชฅเซ‡ เชตเซ‡เชฐเชฟเชฏเซ‡เชกเชฟเช• เชชเชฐเชฟเชฎเชพเชฃเซ‹เชจเซ‡ เชตเซเชฏเชพเช–เซเชฏเชพเชฏเชฟเชค เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡เชจเซ‹ เชตเชพเช•เซเชฏเชฐเชšเชจเชพ (เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชœเซเชฏเชพเชฐเซ‡ "void e(int, โ€ฆ)" เชจเซ‡ เชฌเชฆเชฒเซ‡ "void e(intโ€ฆ)" เชธเซเชชเชทเซเชŸ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡) เชฆเซ‚เชฐ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซ‹ เช›เซ‡.
  • เชฎเซ‹เชกเซเชฏเซเชฒเซ‹ เชœเชพเชนเซ‡เชฐ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชฎเซ‡เช•เซเชฐเซ‹เชจเซ‹ เช‰เชชเชฏเซ‹เช— เชชเซเชฐเชคเชฟเชฌเช‚เชงเชฟเชค เช›เซ‡.
  • เช…เช‚เช•เช—เชฃเชฟเชค เช—เชฃเชคเชฐเซ€เช“เชฎเชพเช‚ เช—เชฃเชคเชฐเซ€ เช•เชฐเซ‡เชฒ เชฎเซ‚เชฒเซเชฏเซ‹เชจเชพ เช—เชฐเซเชญเชฟเชค เชฐเซ‚เชชเชพเช‚เชคเชฐเชฃเซ‹เชจเซ‡ เชฆเซ‚เชฐ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเชพ เช›เซ‡. int main() { enum E1 { e }; enum E2 { f }; bool b = e <= 3.7; // เชจเชพเชชเชธเช‚เชฆ เชฅเชฏเซ‡เชฒ int k = f - e; // เชจเชพเชชเชธเช‚เชฆ เชฅเชฏเซ‡เชฒ int x = +f - e; // เช เซ€เช• เช›เซ‡ }
  • เชกเชพเชฏเชฐเซ‡เช•เซเชŸ เชเชฐเซ‡ เชธเชฐเช–เชพเชฎเชฃเซ€ เชธเชชเซ‹เชฐเซเชŸ เชฌเช‚เชง เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซ‹ เช›เซ‡. int arr1[5]; int arr2[5]; bool same = arr1 == arr2;
  • is_trivial เชŸเซ‡เชฎเซเชชเชฒเซ‡เชŸ เช•เซเชฒเชพเชธเชจเซ‡ เชจเชพเชชเชธเช‚เชฆ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซ‹ เช›เซ‡.

    เชธเซ‹เชฐเซเชธ: opennet.ru

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹