C++ เจญเจพเจธเจผเจพ เจฆเฉ เจฎเจพเจจเจเฉเจเจฐเจจ 'เจคเฉ ISO เจเจฎเฉเจเฉ
เจ
เจเจฒเฉ เจฆเฉ เจฎเจนเฉเจจเจฟเจเจ เจตเจฟเฉฑเจ, เจชเฉเจฐเจตเจพเจจเจฟเจค เจจเจฟเจฐเจงเจพเจฐเจจ เจชเฉเจฐเจเจพเจธเจผเจจ เจฒเจ เจฆเจธเจคเจพเจตเฉเจเจผ เจคเจฟเจเจฐ เจเจฐเจจ เจฆเฉ เจชเฉเจพเจ
'เจคเฉ เจนเฉเจตเฉเจเจพ, เจเจฟเจธ 'เจคเฉ เจธเจชเฉเจฒเจฟเฉฐเจ เจเจฒเจคเฉเจเจ เจ
เจคเฉ เจเจพเจเจชเฉเจเจผ เจฆเฉ เจธเฉฐเจชเจพเจฆเจเฉ เจธเฉเจงเจพเจฐ 'เจคเฉ เจเฉฐเจฎ เจเฉเจคเจพ เจเจพเจตเฉเจเจพเฅค เจจเจตเฉฐเจฌเจฐ เจฆเฉ เจธเจผเฉเจฐเฉ เจตเจฟเฉฑเจ, เจจเจคเฉเจเจพ เจฆเจธเจคเจพเจตเฉเจเจผ ISO/IEC 14882:2020 เจฆเฉ เจฐเจธเจฎเฉ เจจเจพเจฎ เจนเฉเจ เจชเฉเจฐเจเจพเจธเจผเจจ เจฒเจ ISO เจจเฉเฉฐ เจญเฉเจเจฟเจ เจเจพเจตเฉเจเจพเฅค เจเจธ เจฆเฉเจฐเจพเจจ, เจเจฎเฉเจเฉ เจจเฉ เจชเจนเจฟเจฒเจพเจ เจนเฉ เจ
เจเจฒเฉ C++23 เจธเจเฉเจเจกเจฐเจก (C++2b) 'เจคเฉ เจเฉฐเจฎ เจธเจผเฉเจฐเฉ เจเจฐ เจฆเจฟเฉฑเจคเจพ เจนเฉ เจ
เจคเฉ เจเจน เจเจชเจฃเฉ เจ
เจเจฒเฉ เจตเจฐเจเฉเจ
เจฒ เจฎเฉเจเจฟเฉฐเจ เจตเจฟเฉฑเจ เจธเฉฐเจญเจพเจตเจฟเจค เจตเจฟเจเจฒเจชเจพเจ 'เจคเฉ เจตเจฟเจเจพเจฐ เจเจฐเฉเจเฉเฅค
- เจเฉเฉเฉเจเจ เจเจเจเจ "เจธเฉฐเจเจฒเจชเจพเจ", เจเฉเจฎเจชเจฒเฉเจ เจเจเจธเจเฉเจเจธเจผเจจเจพเจ, เจเฉ เจคเฉเจนเจพเจจเฉเฉฐ เจเฉเจฎเจชเจฒเฉเจ เจชเฉเจฐเจพเจฎเฉเจเจฐ เจฒเฉเฉเจพเจ เจฆเฉ เจเฉฑเจ เจธเฉเฉฑเจ เจจเฉเฉฐ เจชเจฐเจฟเจญเจพเจธเจผเจฟเจค เจเจฐเจจ เจฆเฉ เจเจเจพเจเจผเจค เจฆเจฟเฉฐเจฆเฉเจเจ เจนเจจ, เจเฉ เจเจฟ เจเฉฐเจชเจพเจเจฒ เจธเจฎเฉเจ, เจเจฐเจเฉเจฎเฉเจเจเจพเจ เจฆเฉ เจธเฉเฉฑเจ เจจเฉเฉฐ เจธเฉเจฎเจฟเจค เจเจฐเจฆเฉเจเจ เจนเจจ เจเจฟเจจเฉเจนเจพเจ เจจเฉเฉฐ เจเฉเจฎเจชเจฒเฉเจ เจชเฉเจฐเจพเจฎเฉเจเจฐเจพเจ เจตเจเฉเจ เจธเจตเฉเจเจพเจฐ เจเฉเจคเจพ เจเจพ เจธเจเจฆเจพ เจนเฉเฅค เจธเฉฐเจเจฒเจชเจพเจ เจฆเฉ เจตเจฐเจคเฉเจ เจเฉเจเจชเจฒเฉเจ เจฆเฉ เจ
เฉฐเจฆเจฐ เจตเจฐเจคเฉเจเจ เจเจพเจเจฆเฉเจเจ เจกเฉเจเจพ เจเจฟเจธเจฎเจพเจ เจฆเฉเจเจ เจตเจฟเจธเจผเฉเจธเจผเจคเจพเจตเจพเจ เจ
เจคเฉ เจเจจเจชเฉเจ เจชเฉเจฐเจพเจฎเฉเจเจฐเจพเจ เจฆเฉเจเจ เจกเฉเจเจพ เจเจฟเจธเจฎเจพเจ เจฆเฉเจเจ เจตเจฟเจธเจผเฉเจธเจผเจคเจพเจตเจพเจ เจตเจฟเจเจเจพเจฐ เจคเจฐเจเจชเฉเจฐเจจ เจ
เจธเฉฐเจเจคเจคเจพเจตเจพเจ เจคเฉเจ เจฌเจเจฃ เจฒเจ เจเฉเจคเฉ เจเจพ เจธเจเจฆเฉ เจนเฉเฅค
เจเฉเจฎเจชเจฒเฉเจ
เจธเฉฐเจเจฒเจช เจธเจฎเจพเจจเจคเจพ เจคเฉเจฒเจจเจพเจฏเฉเจ = เจฒเฉเฉเจพเจ (T a, T b) {
{ a == b } -> std::boolean;
{ a != b } -> std::boolean;
}; - เจธเจตเฉเจเจพเจฐ เจเจฐ เจฒเจฟเจ
เจเจเจธเจเฉเจเจธเจผเจจเจพเจ เจฎเฉเจกเจฟเจเจฒเจพเจ เจจเจพเจฒ เจเฉฐเจฎ เจเจฐเจจ เจฒเจ เจเฉ เจนเฉเจกเจฐ เจซเจพเจเจฒเจพเจ เจฆเฉ เจฌเจเจพเจ เจตเจฐเจคเฉ เจเจพ เจธเจเจฆเฉ เจนเจจเฅค เจฎเฉเจกเฉเจเจฒ "#เจธเจผเจพเจฎเจฒ" เจฐเจพเจนเฉเจ เจธเจฟเจฐเจฒเฉเจ เจซเจพเจเจฒเจพเจ เจจเฉเฉฐ เจธเจผเจพเจฎเจฒ เจเฉเจคเฉ เจฌเจฟเจจเจพเจ, เจญเจพเจเจพเจ เจฆเฉเจเจ เจธเฉเจฎเจพเจตเจพเจ เจจเฉเฉฐ เจชเจฐเจฟเจญเจพเจธเจผเจฟเจค เจเจฐเจจ เจฆเฉ เจเจงเจพเจฐ 'เจคเฉ เจธเจฐเฉเจค เจเฉเจก เจจเฉเฉฐ เจธเฉฐเจเจ เจฟเจค เจเจฐเจจ เจฆเจพ เจเฉฑเจ เจจเจตเจพเจ เจคเจฐเฉเจเจพ เจชเฉเจฐเจฆเจพเจจ เจเจฐเจฆเฉ เจนเจจเฅค - เจตเฉเจฐเฉเจเจฌเจฒ เจเจฐเจเฉเจฎเฉเจเจ เจตเจฟเฉฑเจ เจเฉเจเจจเจพเจ เจฆเฉ เจฎเฉเจเฉเจฆเจเฉ เจฆเฉ เจเจงเจพเจฐ 'เจคเฉ เจตเฉเจฐเฉเจเจฌเจฒ เจฎเฉเจเจฐเฉ เจฆเฉ เจ เจจเฉเจเฉเจฒ เจตเจฟเจธเจคเจพเจฐ เจฒเจ เจฎเฉเจเจฐเฉ __VA_OPT__เฅค
- เจคเจฟเฉฐเจจ-เจชเฉฑเจเฉ เจคเฉเจฒเจจเจพ เจฒเจ " "เจเจชเจฐเฉเจเจฐ เจฒเจ เจธเจนเจฟเจฏเฉเจเฅค
- เจฌเจฟเฉฑเจเจซเฉเจฒเจกเจพเจ เจฒเจ เจกเจฟเจซเฉเจฒเจ เจเจฒเฉเจฎเฉเจเจ เจธเจผเฉเจฐเฉเจเจค เจเจฐเจจ เจตเจพเจฒเจฟเจเจ เจฒเจ เจธเจฎเจฐเจฅเจจเฅค
- เจฒเจพเจเจฌเจกเจพ "*เจเจธ" เจธเจฎเฉเจเจฐเจจ เจจเฉเฉฐ เจเฉเจชเจเจฐ เจเจฐเจจ เจฆเฉ เจธเจฎเจฐเฉฑเจฅเจพเฅค
struct int_value {
int n = 0;
auto getter_fn() {
//เจฎเจพเฉเจพ:
// เจตเจพเจชเจธเฉ [=]() { เจตเจพเจชเจธเฉ n; };// เจเฉฐเจเจพ:
เจตเจพเจชเจธเฉ [=, *เจเจน]() { เจตเจพเจชเจธเฉ n; };
}
}; - เจชเฉเจเจเฉฐเจเจฐ (เจชเฉเจเจเฉฐเจเจฐ-เจเฉ-เจฎเฉเจเจฌเจฐ) เจฆเฉเจเจฐเจพ เจเจฒเฉเจฎเฉเจเจเจธ เจจเฉเฉฐ เจเจพเจฒ เจเจฐเจจเจพ, "const &" เจธเจฎเฉเจเจฐเจจ เจฆเฉเจเจฐเจพ เจชเจฐเจฟเจญเจพเจธเจผเจฟเจค เจ เจธเจฅเจพเจ เจตเจธเจคเฉเจเจ เจฒเจ เจชเฉเจเจเฉฐเจเจฐเจพเจ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจฆเฉ เจนเฉเจเฅค
- เจฆเจธเจคเจพเจตเฉเจเจผ เจตเจฟเฉฑเจ เจตเจฐเจฃเจฟเจค เจเฉฑเจ เจตเจฟเจจเจพเจธเจผเจเจพเจฐ เจฆเฉ เจจเจพเจฒ เจฎเจฟเจเจพเจ เจเจชเจฐเฉเจเจฐ
P0722R1 . - เจเจฒเจพเจธเจพเจ เจจเฉเฉฐ เจฌเจฟเจจเจพเจ เจเจฟเจธเฉ เจเจฟเจธเจฎ เจฆเฉ เจเฉเจเจชเจฒเฉเจ เจชเฉเจฐเจพเจฎเฉเจเจฐเจพเจ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจจ เจฆเฉ เจเจเจพเจเจผเจค เจนเฉเฅค
struct foo {
foo() = เจกเจฟเจซเจพเจฒเจ;
constexpr foo(int) {}
};เจเฉเจฎเจชเจฒเฉเจ
เจเจเฉ get_foo() {
เจตเจพเจชเจธเฉ f;
}get_foo(); // เจ เจชเฉเจฐเจคเฉฑเจ เจเฉฐเจธเจเจฐเจเจเจฐ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจฆเจพ เจนเฉ
get_foo (); - เจเฉฐเจธเจเจฐเจเจเจฐ เจฆเฉ เจจเจพเจฒ เจเฉเจฐ-เจธเจฅเจพเจ เจฒเจพเจเจฌเจกเจพ เจธเจฎเฉเจเจฐเจจเฅค
- เจฒเฉเจเจฌเจกเจพ เจธเจฎเฉเจเจฐเจจ (โเจเจเฉ f = [] เจฒเจ เจเฉเจฎเจชเจฒเฉเจ เจธเฉฐเจเฉเจเจธ เจฆเฉ เจเจเจฟเจ เจฆเฉ เจฐเจฟเจนเจพ เจนเฉ (std::vector v)").
- เจเฉเจเจชเจฒเฉเจ เจชเฉเจฐเจพเจฎเฉเจเจฐเจพเจ เจตเจฟเฉฑเจ เจธเจเฉเจฐเจฟเฉฐเจ เจฒเจฟเจเจฐเจฒ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจจ เจฆเฉ เจธเจฎเจฐเฉฑเจฅเจพเฅค
- C-เจธเจผเฉเจฒเฉ เจธเจผเฉเจฐเฉเจเจคเฉ เจธเฉฐเจเฉเจเจธ เจฒเจ เจธเจฎเจฐเจฅเจจ - เจธเจผเฉเจฐเฉเจเจคเฉ เจธเฉเจเฉ เจตเจฟเฉฑเจ เจธเจชเจธเจผเจ เจคเฉเจฐ 'เจคเฉ เจธเฉเจเฉเจฌเฉฑเจง เจจเจนเฉเจ เจเฉเจคเฉ เจเจ เจเฉเจคเจฐเจพเจ เจจเฉเฉฐ เจฎเฉเจฒ เจฐเฉเจช เจตเจฟเฉฑเจ เจธเจผเฉเจฐเฉ เจเฉเจคเจพ เจเจพเจเจฆเจพ เจนเฉเฅค
struct A {
เจเฉฐเจ x;
int y;
int z = 123;
};A a {.x = 1, .z = 2}; // ax == 1, ay == 0, az == 2
- เจเจพเจฒเฉ เจกเจพเจเจพ เจขเจพเจเจเฉ เจฆเฉ เจฎเฉเจเจฌเจฐเจพเจ เจฒเจ เจธเจฎเจฐเจฅเจจเฅค
- เจธเฉฐเจญเจพเจตเจฟเจค เจ เจคเฉ เจ เจธเฉฐเจญเจต เจเฉเจฃเจพเจ เจฒเจ เจธเจฎเจฐเจฅเจจ เจเฉ เจ เจจเฉเจเฉเจฒเจคเจพ เจจเฉเฉฐ เจเจพเจฒเฉ เจนเฉเจฃ เจฆเฉ เจธเจผเจฐเจคเฉเจ เจฐเจเจจเจพ เจฆเฉ เจธเฉฐเจญเจพเจตเจจเจพ เจฌเจพเจฐเฉ เจธเฉเจเจฟเจค เจเจฐเจฆเจพ เจนเฉ (โ[[เจธเฉฐเจญเจพเจตเจจเจพ]] เจเฉเจเจฐ (เจฌเฉเจคเจฐเจคเฉเจฌ > 0) {โ)เฅค
- "เจฒเจ" เจฒเฉเจช เจตเจฟเฉฑเจ เจตเฉเจฐเฉเจเจฌเจฒ เจฎเฉเฉฑเจฒเจพเจ เจจเฉเฉฐ เจธเจผเฉเจฐเฉ เจเจฐเจจ เจฒเจ เจฐเฉเจเจเจพเจ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจจ เจฆเฉ เจธเจฎเจฐเฉฑเจฅเจพ
เจฒเจ (เจเจเฉ v = std::vector{1, 2, 3}; auto& e : v) {
- เจจเจตเฉเจ เจตเจฟเฉฑเจ เจเจฐเฉ เจเจเจพเจฐ เจฆเฉ เจธเจตเฉเจเจฒเจฟเจค เจเจฃเจจเจพ (โเจจเจตเจพเจ เจกเจฌเจฒ[]{1,2,3}โ);
- โ[[no_unique_address]]โ เจตเจฟเจธเจผเฉเจธเจผเจคเจพ เจเจฟเจธ เจตเจฟเฉฑเจ เจฌเจฟเจจเจพเจ เจกเฉเจเจพ เจฆเฉ เจตเฉเจฐเฉเจเจฌเจฒ เจธเจชเฉเจธ เจจเจนเฉเจ เจฒเฉเจเจฆเฉ เจนเจจเฅค
- เจชเจฐเจฎเจพเจฃเฉ เจชเฉเจเจเฉฐเจเจฐ (std::atomic > เจ เจคเฉ std::atomic >)เฅค
- เจเฉฐเจกเฉเจธเจผเจจเจฒ เจธเจฎเฉเจเจฐเจจ เจตเจฟเฉฑเจ เจตเจฐเจเฉเจ เจฒ เจซเฉฐเจเจธเจผเจจเจพเจ เจจเฉเฉฐ เจเจพเจฒ เจเจฐเจจ เจฆเฉ เจธเจฎเจฐเฉฑเจฅเจพเฅค
- เจคเจคเจเจพเจฒ เจซเฉฐเจเจธเจผเจจเจพเจ เจฒเจ เจธเจฎเจฐเจฅเจจ เจเฉ เจธเจฟเจฐเจซ เจธเจฅเจฟเจฐเจพเจเจ เจจเจพเจฒ เจเฉฐเจฎ เจเจฐ เจธเจเจฆเฉ เจนเจจเฅค
consteval int sqr(int n) {
เจตเจพเจชเจธเฉ n * n;
}constexpr int r = sqr(100); // เจ เฉเจ เจนเฉ
int x = 100;
int r2 = sqr(x); // เจเจฒเจคเฉ: 'x' เจจเฉเฉฐ เจธเจฅเจฟเจฐ เจตเจเฉเจ เจตเจฐเจคเจฟเจ เจจเจนเฉเจ เจเจพ เจธเจเจฆเจพ - เจตเจฐเจเฉเจ เจฒ เจซเฉฐเจเจธเจผเจจเจพเจ ("constexpr virtual int f() const { return 2; }") เจฆเฉ เจจเจพเจฒ constexpr เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจจ เจฆเฉ เจธเฉฐเจญเจพเจตเจจเจพเฅค
- เจฎเจฟเจเจฐเฉ เจฒเจพเจเจฌเฉเจฐเฉเจฐเฉ เจตเจฟเฉฑเจ:
- UTF-8 เจธเจคเจฐ เจฒเจ char8_t เจเจฟเจธเจฎ เจฒเจ เจธเจฎเจฐเจฅเจจ เจเฉเฉเจฟเจ เจเจฟเจเฅค
- เจธเจฟเจฐเจฒเฉเจ เจซเจพเจเจฒเจพเจ เจฌเจฟเฉฑเจ (เจฌเจฟเฉฑเจ เจเจชเจฐเฉเจธเจผเจจ) เจ เจคเฉ เจธเฉฐเจธเจเจฐเจฃ เจธเจผเจพเจฎเจฒ เจเฉเจคเจพ เจเจฟเจเฅค
- เจธเจคเจฐ เจฆเฉ เจ เจเฉเจคเจฐ เจ เจคเฉ เจชเจฟเจเฉเจคเจฐ เจฆเฉ เจเจพเจเจ เจเจฐเจจเจพ เจนเฉเจฃ เจธเฉฐเจญเจต เจนเฉ (starts_with, ends_with)เฅค
- std::remove_cvref, std::unwrap_reference, std::unwrap_decay_ref, std::is_nothrow_convertible เจ เจคเฉ std::type_identity เจเฉเจฃ เจธเจผเจพเจฎเจฒ เจเฉเจคเฉ เจเจเฅค
- เจซเฉฐเจเจธเจผเจจ std::midpoint, std::lerp, std::bind_front, std::source_location, std::visit, std::is_constant_evaluated เจ เจคเฉ std::assume_aligned เจธเจผเจพเจฎเจฒ เจเฉเจคเฉ เจเจเฅค
- std::make_shared เจตเจฟเฉฑเจ เจเจฐเฉ เจฒเจ เจธเจฎเจฐเจฅเจจ เจเฉเฉเจฟเจ เจเจฟเจเฅค
- เจเจฐเฉ เจตเจฐเจเฉเจเจ เจตเจธเจคเฉเจเจ เจจเฉเฉฐ std::array เจตเจฟเฉฑเจ เจฌเจฆเจฒเจฃ เจฒเจ std::to_array เจซเฉฐเจเจธเจผเจจ เจธเจผเจพเจฎเจฒ เจเฉเจคเจพ เจเจฟเจเฅค
- เจตเจงเฉเจฐเฉ เจธเฉเจตเจฟเจงเจพเจเจจเจ เจเจฃเจจเจพ เจธเฉฐเจเฉเจเจธ:
enum เจเจฒเจพเจธ rgba_color_channel { เจฒเจพเจฒ, เจนเจฐเจพ, เจจเฉเจฒเจพ, เจ เจฒเจซเจผเจพ };
std::string_view to_string(rgba_color_channel my_channel) {
เจฌเจฆเจฒเฉ (my_channel) {
enum rgba_color_channel เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจจเจพ;
เจเฉเจธ เจฒเจพเจฒ: เจตเจพเจชเจธ "เจฒเจพเจฒ";
เจเฉเจธ เจนเจฐเจพ: เจตเจพเจชเจธ "เจนเจฐเจพ";
เจเฉเจธ เจจเฉเจฒเจพ: เจตเจพเจชเจธ "เจจเฉเจฒเจพ";
เจเฉเจธ เจ เจฒเจซเจผเจพ: เจตเจพเจชเจธเฉ "เจ เจฒเจซเจผเจพ";
}
} - เจธเฉเจเจเจพเจเจ เจตเจฟเฉฑเจ, เจชเจฐเจฟเจญเจพเจธเจผเจฟเจค เจตเจฟเจตเจนเจพเจฐ เจฆเฉ เจเจพเจฐเจจ, เจเจชเจฐเฉเจธเจผเจจ "," ("a[b,c]") เจฆเฉ เจตเจฐเจคเฉเจ เจฆเฉ เจฎเจจเจพเจนเฉ เจนเฉเฅค เจ เจธเจฅเจฟเจฐ เจเฉเจตเจฐเจก เจจเจพเจฒ เจเฉเจธเจผเจฟเจค เจตเฉเจฐเฉเจเจฌเจฒเจพเจ เจฆเฉ เจจเจพเจฒ เจเจผเจฟเจเจฆเจพเจคเจฐ เจเจชเจฐเฉเจธเจผเจจเจพเจ เจฒเจ เจธเจฎเจฐเจฅเจจ เจฌเฉฐเจฆ เจเจฐ เจฆเจฟเฉฑเจคเจพ เจเจฟเจ เจนเฉ, เจเจฟเจธ เจตเจฟเฉฑเจ เจฎเจฟเจเจฐเฉ เจเจฟเจธเจฎเจพเจ เจฆเฉ เจจเจพเจฒ โ++โ เจ เจคเฉ โโโ เจเจชเจฐเฉเจธเจผเจจ เจธเจผเจพเจฎเจฒ เจนเจจเฅค
- เจเจนเจจเจพเจ เจธเจฅเจฟเจคเฉเจเจ เจฆเฉ เจธเฉฐเจเจฟเจ เจจเฉเฉฐ เจเจเจพเจเจ เจเจฟเจธ เจตเจฟเฉฑเจ เจเฉฑเจ เจเจฟเจธเจฎ เจฆเฉ เจฎเฉเจเฉเจฆเจเฉ เจจเฉเฉฐ เจฆเจฐเจธเจพเจเจฃ เจฒเจ "เจเจพเจเจชเจจเจพเจฎ" เจฆเฉ เจฒเฉเฉ เจนเฉเฉฐเจฆเฉ เจนเฉเฅค
เจธเจฐเฉเจค: opennet.ru