ืืขืืช ISO ืืชืงืื ื ืฉื ืฉืคืช C++
ืืืืืฉืืื ืืงืจืืืื ืืืคืจื ืืืืืฉืจ ืืืื ืืฉืื ืืื ืช ืืืกืื ืืคืจืกืื, ืื ืชืชืืฆืข ืขืืืื ืขื ืชืืงืื ืขืจืืื ืฉื ืฉืืืืืช ืืชืื ืืฉืืืืืช ืืงืืื. ืืชืืืืช ื ืืืืืจ, ืืืกืื ืฉืืชืงืื ืืืฉืื ื-ISO ืืคืจืกืื ืชืืช ืืฉื ืืจืฉืื ISO/IEC 14882:2020. ืืื ืชืืื, ืืืืขืื ืืืจ ืืืื ืืขืืื ืขื ืชืงื C++23 ืืื (C++2b) ืืชืืื ืืคืฉืจืืืืช ืืคืฉืจืืืช ืืคืืืฉื ืืืืจืืืืืืช ืืืื ืฉืื.
- ื ืืกืคื "ืืืฉืืื", ืืจืืืืช ืชืื ืืช, ืืืืคืฉืจืืช ืื ืืืืืืจ ืงืืืฆื ืฉื ืืจืืฉืืช ืคืจืืืจืื ืฉื ืชืื ืืช ืฉืืืื ืืงืืืคืืืฆืื ืืืืืืืช ืืช ืงืืืฆืช ืืืจืืืื ืืื ืฉื ืืชื ืืงืื ืืคืจืืืจืื ืฉื ืชืื ืืช. ื ืืชื ืืืฉืชืืฉ ืืืืฉืืื ืืื ืืื ืืข ืืืกืจ ืขืงืืืืช ืืืืืช ืืื ืืืืคืืื ืื ืฉื ืกืืื ืื ืชืื ืื ืืืฉืืฉืื ืืชืื ืืชืื ืืช ืืืื ืืืคืืื ื ืกืื ืื ืชืื ืื ืฉื ืคืจืืืจื ืืงืื.
ืชืื ืืช
ืืืฉื EqualityComparable = requires(T a, T b) {
{ a == b } -> std::boolean;
{ a != b } -> std::boolean;
}; - ืึฐืงืึผืึผึธื
ืืจืืืืช ืืขืืืื ืขื ืืืืืืื ืฉื ืืชื ืืืฉืชืืฉ ืืื ืืืงืื ืงืืฆื ืืืชืจืช. ืืืืืืื ืืกืคืงืื ืืจื ืืืฉื ืืืจืื ืืช ืงืื ืืืงืืจ ืขื ืกืื ืืืืจืช ืืืืืืืช ืฉื ืจืืืืื, ืืืื ืืืืื ืงืืืฆื ืืืชืจืช ืืืืฆืขืืช "#include". - ืืืงืจื __VA_OPT__ ืืืจืืื ืืืคืืืืืช ืฉื ืคืงืืืืช ืืืงืจื ืืฉืชื ืืช ืืืชืื ืื ืืืืืช ืฉื ืืกืืืื ืื ืืืจืืืื ื ืืืฉืชื ื.
- ืชืืืื ืืืคืขืื "" ืืืฉืืืื ืชืืช ืืืืื ืืช.
- ืชืืืื ืืืชืืืื ืืืื ืืื ืืืืืืจืื ืืืจืืจืช ืืืื ืขืืืจ ืฉืืืช ืกืืืืืช.
- ืืืืืช ืืืืื ืืืืื ืืืืืืื ืฉื "*ืื".
struct int_value {
int n = 0;
auto getter_fn() {
//ืจึทืข:
// return [=]() { return n; };// ืืื:
return [=, *this]() { return n; };
}
}; - ืงืจืืื ืืืืื ืืื ืืืืฆืขืืช ืืฆืืืข (ืืฆืืืข ืืืืืจ), ืฉืืืืฉ ืืืฆืืืขืื ืืืืืืืงืืื ืืื ืืื ืืืืืืจืื ืืืืฆืขืืช ืืืืืื "const &".
- ืืคืขืื ืืืืืงื ืขื ืืจืก ืืืชืืืจ ืืืกืื
P0722R1 . - ืืืืงืืช ืจืฉืืืืช ืืืฉืชืืฉ ืืคืจืืืจืื ืฉื ืชืื ืืช ืืื ืกืื.
struct foo {
foo() = ืืจืืจืช ืืืื;
constexpr foo(int) {}
};ืชืื ืืช
auto get_foo() {
ืืืืืจ f;
}get_foo(); // ืืฉืชืืฉ ืืื ืื ืืจืืื
get_foo (); - ืืืืืื ืืืืื ืื ืงืืืขืื ืขื ืื ืื.
- ืืืคืฉืจ ืชืืืืจ ืชืื ืืช ืขืืืจ ืืืืืื ืืืืื ("auto f = [] (std::vector v)").
- ืืืืืช ืืืฉืชืืฉ ืืืืืืื ืืืจืืืช ืืคืจืืืจืื ืฉื ืชืื ืืช.
- ืชืืืื ืืชืืืืจ ืืชืืื ืืกืื ืื C - ืฉืืืช ืฉืืื ื ืจืฉืืืื ืืืคืืจืฉ ืืจืฉืืืช ืืืชืืื ืืืืชืืืื ืืืจืืจืช ืืืื.
ืืื ื A {
int x;
int y;
int z = 123;
};A a {.x = 1, .z = 2}; // ax == 1, ay == 0, az == 2
- ืชืืืื ืืืืจื ืืื ื ื ืชืื ืื ืจืืงืื.
- ืชืืืื ืืชืืื ืืช ืืกืืืจืืช ืืืืืชื ืกืืืจืืช ืืื ืืืืืข ืืช ืืืืคืืืืืืฆืื ืืืื ืืืกืชืืจืืช ืฉืืืื ื ืืืืชื ื ืืืคืขื ("[[ืกืืืจ]] ืื (ืืงืจืื > 0) {").
- ืืืืืช ืืืฉืชืืฉ ืืืืืืื ืืื ืืืชืื ืขืจืื ืืฉืชื ืื ืืืืืื "ืขืืืจ".
for (auto 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 ืขื ืคืื ืงืฆืืืช ืืืจืืืืืืืช ("constexpr virtual int f() const { return 2; }").
- ืืกืคืจืืื ืืจืืืื:
- ื ืืกืคื ืชืืืื ืืกืื char8_t ืขืืืจ ืืืจืืืืช UTF-8.
- ื ืืกืคื ืกืืืืืช ืฉื ืงืืฆื ืืืชืจืช (ืคืขืืืืช ืกืืืืืช) ืืืจืกื.
- ืืขืช ื ืืชื ืืืืืง ืืช ืืงืืืืืช ืืืกืืืืช ืฉื ืืืจืืืืช (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::to_array ืืืืจืช ืืืืืืงืืื ืืืืื ืืขืจื ื-std::array.
- ืชืืืืจ ืกืคืืจื ื ืื ืืืชืจ:
enum class rgba_color_channel { ืืืื, ืืจืืง, ืืืื, ืืืคื };
std::string_view to_string(rgba_color_channel my_channel) {
switch (my_channel) {
ืืืืฆืขืืช enum rgba_color_channel;
ืืงืจื ืืืื: ืืืืจ "ืืืื";
ืืงืจื ืืจืืง: ืืืืจ "ืืจืืง";
ืืงืจื ืืืื: ืืืืจ "ืืืื";
ืืงืจื ืืืคื: ืืืืจ "ืืืคื";
}
} - ืืืื ืืงืกืื, ืขืงื ืืชื ืืืืช ืื ืืืืืจืช, ืืฉืืืืฉ ืืคืขืืื "," ("a[b,c]") ืืกืืจ. ืืชืืืื ืืจืื ืืคืขืืืืช ืขื ืืฉืชื ืื ืฉืืืืจืื ืขื ืืืืช ืืืคืชื ืืคืืคืื ืืืคืกืงื, ืืืื ืคืขืืืืช "++" ื-"โ" ืขื ืกืืืื ืกืื ืืจืืืื.
- ืืคืืชืช ืืกืคืจ ืืืฆืืื ืฉืืื ื ืืจืฉ "ืฉื ืกืื" ืืฆืืื ื ืืืืืช ืฉื ืืืคืืก.
ืืงืืจ: OpenNet.ru