ΠΠΎΠΌΠΈΡΠ΅Ρ ISO ΠΏΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠΈΠ·Π°ΡΠΈΠΈ ΡΠ·ΡΠΊΠ° C++
Π ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π΄Π²Π° ΠΌΠ΅ΡΡΡΠ° ΡΡΠ²Π΅ΡΠΆΠ΄ΡΠ½Π½Π°Ρ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ Π±ΡΠ΄Π΅Ρ Π½Π°Ρ
ΠΎΠ΄ΠΈΡΡΡΡ Π½Π° ΡΡΠ°Π΄ΠΈΠΈ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠΈ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° ΠΊ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΠΈ, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΉ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΠ²Π΅Π΄Π΅Π½Π° ΡΠ°Π±ΠΎΡΠ° ΠΏΠΎ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΡΠΊΠΎΠΉ ΠΏΡΠ°Π²ΠΊΠ΅ ΠΎΡΡΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ
ΠΎΡΠΈΠ±ΠΎΠΊ ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΠΊ. Π Π½Π°ΡΠ°Π»Π΅ Π½ΠΎΡΠ±ΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠΈΡΡΡΡΠΈΠΉ Π²Π°ΡΠΈΠ°Π½Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° Π±ΡΠ΄Π΅Ρ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ Π² ISO Π΄Π»Ρ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΠΈ ΠΏΠΎΠ΄ ΡΠΎΡΠΌΠ°Π»ΡΠ½ΡΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ ISO/IEC 14882:2020. Π’Π΅ΠΌ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ, ΠΊΠΎΠΌΠΈΡΠ΅Ρ ΡΠΆΠ΅ ΠΏΡΠΈΡΡΡΠΏΠΈΠ» ΠΊ ΡΠ°Π±ΠΎΡΠ΅ Π½Π°Π΄ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΡΡΠ°Π½Π΄Π°ΡΡΠΎΠΌ C++23 (C++2b) ΠΈ Π½Π° Π±Π»ΠΈΠΆΠ°ΠΉΡΠ΅ΠΌ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΌ ΡΠΎΠ²Π΅ΡΠ°Π½ΠΈΠΈ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠ΅
- ΠΠΎΠ±Π°Π²Π»Π΅Π½Ρ «ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΈ», ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠ², ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π½Π°Π±ΠΎΡ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ ΠΊ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌ ΡΠ°Π±Π»ΠΎΠ½Π°, ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΠ²Π°ΡΡ Π½Π°Π±ΠΎΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΡΠ°Π±Π»ΠΎΠ½Π°. ΠΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΡ
Π½Π΅ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΉ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ²ΠΎΠΉΡΡΠ²Π°ΠΌΠΈ ΡΠΈΠΏΠΎΠ² Π΄Π°Π½Π½ΡΡ
, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ
Π²Π½ΡΡΡΠΈ ΡΠ°Π±Π»ΠΎΠ½Π°, ΠΈ ΡΠ²ΠΎΠΉΡΡΠ²Π°ΠΌΠΈ ΡΠΈΠΏΠΎΠ² Π΄Π°Π½Π½ΡΡ
Π²Ρ
ΠΎΠ΄Π½ΡΡ
ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ².
template<typename T>
concept EqualityComparable = requires(T a, T b) {
{ a == b } -> std::boolean;
{ a != b } -> std::boolean;
}; - Π ΡΠΎΡΡΠ°Π² ΠΏΡΠΈΠ½ΡΡΡ
ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΌΠΎΠ΄ΡΠ»ΡΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²ΠΌΠ΅ΡΡΠΎ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ². ΠΠΎΠ΄ΡΠ»ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ Π½ΠΎΠ²ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ ΠΈΡΡ ΠΎΠ΄Π½ΡΡ ΡΠ΅ΠΊΡΡΠΎΠ² Π½Π° ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π³ΡΠ°Π½ΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ², Π±Π΅Π· ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΠΌΡΡ ΡΠ΅ΡΠ΅Π· «#include» Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ². - ΠΠ°ΠΊΡΠΎΡ __VA_OPT__ Π΄Π»Ρ Π°Π΄Π°ΠΏΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΡΠ°ΡΠΊΡΡΡΠΈΡ Π²Π°ΡΠΈΠ°ΡΠΈΠ²Π½ΡΡ ΠΌΠ°ΠΊΡΠΎΡΠΎΠ² Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ Π½Π°Π»ΠΈΡΠΈΡ ΡΠΎΠΊΠ΅Π½ΠΎΠ² Π² Π²Π°ΡΠΈΠ°ΡΠΈΠ²Π½ΠΎΠΌ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ΅.
- ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° «» Π΄Π»Ρ ΡΡΠ΅Ρ ΡΡΠΎΡΠΎΠ½Π½Π΅Π³ΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ.
- ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡΠΎΠ² ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π΄Π»Ρ Π±ΠΈΡΠΎΠ²ΡΡ ΠΏΠΎΠ»Π΅ΠΉ.
- ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π»ΡΠΌΠ±Π΄Π°-Π·Π°Ρ
Π²Π°ΡΠ° Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ «*this».
struct int_value {
int n = 0;
auto getter_fn() {
// BAD:
// return [=]() { return n; };// GOOD:
return [=, *this]() { return n; };
}
}; - ΠΡΠ·ΠΎΠ² ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΏΠΎ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ (Pointer-to-member), ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΡΠ΅ ΡΠ΅ΡΠ΅Π· Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ «const &» ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ Π½Π° Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ.
- ΠΠΏΠ΅ΡΠ°ΡΠΎΡ delete Ρ Π΄Π΅ΡΡΡΡΠΊΡΠΎΡΠΎΠΌ, ΠΎΠΏΠΈΡΠ°Π½Π½ΡΠΉ Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ΅
P0722R1 . - ΠΠ»Π°ΡΡΠ°ΠΌ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΠ°Π±Π»ΠΎΠ½Π° Π±Π΅Π· ΡΠΈΠΏΠ°.
struct foo {
foo() = default;
constexpr foo(int) {}
};template <foo f>
auto get_foo() {
return f;
}get_foo(); // uses implicit constructor
get_foo<foo{123}>(); - ΠΠ΅ ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΠΌΡΠ΅ Π»ΡΠΌΠ±Π΄Π°-Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ Ρ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠΎΠΌ.
- ΠΠΎΠΏΡΡΡΠΈΠΌΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ° ΡΠ°Π±Π»ΠΎΠ½ΠΎΠ² Π΄Π»Ρ Π»Π°ΠΌΠ±Π΄Π°-Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ («auto f = []<typename T>(std::vector<T> v)»).
- ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΡΡΠΎΠΊΠΎΠ²ΡΡ Π»ΠΈΡΠ΅ΡΠ°Π»ΠΎΠ² Π² ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°Ρ ΡΠ°Π±Π»ΠΎΠ½Π°.
- ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ° ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π² ΡΡΠΈΠ»Π΅ Π‘ΠΈ — ΡΠ²Π½ΠΎ Π½Π΅ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Π½ΡΠ΅ Π² ΡΠΏΠΈΡΠΊΠ΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠΎΠ»Ρ, ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΡΡΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ.
struct A {
int x;
int y;
int z = 123;
};A a {.x = 1, .z = 2}; // a.x == 1, a.y == 0, a.z == 2
- ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΏΡΡΡΡΡ ΡΠ»Π΅Π½ΠΎΠ² ΡΡΡΡΠΊΡΡΡ Π΄Π°Π½Π½ΡΡ .
- ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Π°ΡΡΠΈΠ±ΡΡΠΎΠ² likely ΠΈ unlikely Π΄Π»Ρ ΠΈΠ½ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΎΡΠ° ΠΎ Π²Π΅ΡΠΎΡΡΠ½ΠΎΡΡΠΈ ΡΡΠ°Π±Π°ΡΡΠ²Π°Π½ΠΈΡ ΡΡΠ»ΠΎΠ²Π½ΠΎΠΉ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ («[[likely]] if (random > 0) {«).
- ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΎΠ² Π΄Π»Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π² ΡΠΈΠΊΠ»Π΅ «for»
for (auto v = std::vector{1, 2, 3}; auto& e : v) {
- ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΠΌΠ°ΡΡΠΈΠ²Π° Π² new («new double[]{1,2,3}»);
- ΠΡΡΠΈΠ±ΡΡ «[[no_unique_address]]» ΠΏΡΠΈ ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π±Π΅Π· Π΄Π°Π½Π½ΡΡ Π½Π΅ Π·Π°Π½ΠΈΠΌΠ°ΡΡ ΠΌΠ΅ΡΡΠ°.
- ΠΡΠΎΠΌΠ°ΡΠ½ΡΠ΅ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ (std::atomic<shared_ptr<T>> ΠΈ std::atomic<weak_ptr<T>>).
- ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π²ΡΠ·ΠΎΠ²Π° Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ Π² ΡΡΠ»ΠΎΠ²Π½ΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡΡ .
- ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Π±ΡΡΡΡΡΡ
(immediate) ΡΡΠ½ΠΊΡΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Ρ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ°ΠΌΠΈ.
consteval int sqr(int n) {
return n * n;
}constexpr int r = sqr(100); // OK
int x = 100;
int r2 = sqr(x); // ERROR: ‘x’ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΊΠ°ΠΊ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ° - ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ constexpr Ρ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΠΌΠΈ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ («constexpr virtual int f() const { return 2; }»).
- Π ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅:
- ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΠΈΠΏΠ° char8_t Π΄Π»Ρ ΡΡΡΠΎΠΊ UTF-8.
- ΠΠΎΠ±Π°Π²Π»Π΅Π½Ρ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ bit (Π±ΠΈΡΠΎΠ²ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ) ΠΈ version.
- ΠΠΎΡΠ²ΠΈΠ»Π°ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΏΡΠ΅ΡΠΈΠΊΡΠ° ΠΈ ΡΡΡΡΠΈΠΊΡΠ° ΡΡΡΠΎΠΊ (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 { red, green, blue, alpha };
std::string_view to_string(rgba_color_channel my_channel) {
switch (my_channel) {
using enum rgba_color_channel;
case red: return «red»;
case green: return «green»;
case blue: return «blue»;
case alpha: return «alpha»;
}
} - Π ΠΈΠ½Π΄Π΅ΠΊΡΠ°Ρ ΠΈΠ·-Π·Π° Π½Π΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ Π·Π°ΠΏΡΠ΅ΡΠ΅Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ «,» («a[b,c]»). ΠΡΠ΅ΠΊΡΠ°ΡΠ΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌΠΈ, ΠΎΠ±ΡΡΠ²Π»Π΅Π½Π½ΡΠΌΠΈ Ρ ΠΊΠ»ΡΡΠ΅Π²ΡΠΌ ΡΠ»ΠΎΠ²ΠΎΠΌ volatile, Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ Π·Π°ΠΏΡΠ΅ΡΠ΅Π½Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ «++» ΠΈ «—» ΡΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΌΠΈ ΡΠΈΠΏΠ°ΠΌΠΈ.
- Π‘ΠΎΠΊΡΠ°ΡΠ΅Π½ΠΎ ΡΠΈΡΠ»ΠΎ ΡΠΈΡΡΠ°ΡΠΈΠΉ, Π² ΠΊΠΎΡΠΎΡΡΡ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ «typename» Π΄Π»Ρ ΠΈΠ½ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΠΎ Π½Π°Π»ΠΈΡΠΈΠΈ ΡΠΈΠΏΠ°.
ΠΡΡΠΎΡΠ½ΠΈΠΊ: opennet.ru