ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠΏΠΈΡΠΊΠΎΠΌ (Π½Π°ΡΠΈΠ½Π°Ρ Ρ C++11)
ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΈΠ· ΡΠΏΠΈΡΠΊΠ° ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π² ΡΠΊΠΎΠ±ΠΊΠ°Ρ .
Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ
ΠΡΡΠΌΠ°Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠΏΠΈΡΠΊΠΎΠΌ
T Π±ΡΠ΅ΠΊΡ { Π°ΡΠ³1, Π°ΡΠ³2, ... };
|
(1) | ||||||||
T { Π°ΡΠ³1, Π°ΡΠ³2, ... }
|
(2) | ||||||||
new T { Π°ΡΠ³1, Π°ΡΠ³2, ... }
|
(3) | ||||||||
ΠΠ»Π°ΡΡ { T ΡΠ»Π΅ΠΌΠ΅Π½Ρ { arg1, arg2, ... }; };
|
(4) | ||||||||
ΠΠ»Π°ΡΡ::ΠΠ»Π°ΡΡ() : ΡΠ»Π΅ΠΌΠ΅Π½Ρ { Π°ΡΠ³1, Π°ΡΠ³2, ... } {...
|
(5) | ||||||||
ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠΏΠΈΡΠΊΠ°
T ΠΎΠ±ΡΠ΅ΠΊΡ = { Π°ΡΠ³1, Π°ΡΠ³2, ... };
|
(6) | ||||||||
ΡΡΠ½ΠΊΡΠΈΡ ({ Π°ΡΠ³1, Π°ΡΠ³2, ... })
|
(7) | ||||||||
return { Π°ΡΠ³1, Π°ΡΠ³2, ... };
|
(8) | ||||||||
ΠΎΠ±ΡΠ΅ΠΊΡ [{ Π°ΡΠ³1, Π°ΡΠ³2, ... }]
|
(9) | ||||||||
ΠΎΠ±ΡΠ΅ΠΊΡ = { Π°ΡΠ³1, Π°ΡΠ³2, ... }
|
(10) | ||||||||
U ({ Π°ΡΠ³1, Π°ΡΠ³2, ... })
|
(11) | ||||||||
ΠΠ»Π°ΡΡ { T ΡΠ»Π΅ΠΌΠ΅Π½Ρ = { Π°ΡΠ³1, Π°ΡΠ³2, ... }; };
|
(12) | ||||||||
ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠΏΠΈΡΠΊΠΎΠΌ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π² ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΡΠ»ΡΡΠ°ΡΡ :
- ΠΏΡΡΠΌΠ°Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠΏΠΈΡΠΊΠΎΠΌ (ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡΡΡ ΠΊΠ°ΠΊ ΡΠ²Π½ΡΠ΅, ΡΠ°ΠΊ ΠΈ Π½Π΅ΡΠ²Π½ΡΠ΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΡ)
- ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠΏΠΈΡΠΊΠ° (ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡΡΡ ΠΊΠ°ΠΊ ΡΠ²Π½ΡΠ΅, ΡΠ°ΠΊ ΠΈ Π½Π΅ΡΠ²Π½ΡΠ΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΡ, Π½ΠΎ ΠΌΠΎΠ³ΡΡ Π²ΡΠ·ΡΠ²Π°ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π½Π΅ΡΠ²Π½ΡΠ΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΡ)
return ΡΠΎ ΡΠΏΠΈΡΠΊΠΎΠΌ-ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ-Π²-ΡΠΈΠ³ΡΡΠ½ΡΡ
-ΡΠΊΠΎΠ±ΠΊΠ°Ρ
, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΌ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ³ΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ, Π³Π΄Π΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠΏΠΈΡΠΊΠΎΠΌ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡoperator[], Π³Π΄Π΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠΏΠΈΡΠΊΠΎΠΌ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΠΏΠ΅ΡΠ΅Π³ΡΡΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ°ΠΠ±ΡΡΡΠ½Π΅Π½ΠΈΠ΅
ΠΡΡΠ΅ΠΊΡΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠΏΠΈΡΠΊΠΎΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΡΠΈΠΏΠ° T:
|
(Π½Π°ΡΠΈΠ½Π°Ρ Ρ C++20) |
- ΠΡΠ»ΠΈ
TΡΠ²Π»ΡΠ΅ΡΡΡ Π°Π³ΡΠ΅Π³ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ ΠΊΠ»Π°ΡΡΠΎΠΌ, Π° ΡΠΏΠΈΡΠΎΠΊ-ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ-Π²-ΡΠΈΠ³ΡΡΠ½ΡΡ -ΡΠΊΠΎΠ±ΠΊΠ°Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΎΠ΄ΠΈΠ½ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΠΈΠ»ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° (Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, cv-ΠΊΠ²Π°Π»ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ), ΠΎΠ±ΡΠ΅ΠΊΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅ΡΡΡ ΠΈΠ· ΡΡΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° (Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π΄Π»Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ-ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ-ΡΠΏΠΈΡΠΊΠ° ΠΈΠ»ΠΈ ΠΏΡΡΠΌΠΎΠΉ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π΄Π»Ρ ΠΏΡΡΠΌΠΎΠΉ-ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ-ΡΠΏΠΈΡΠΊΠΎΠΌ). - ΠΠ½Π°ΡΠ΅, Π΅ΡΠ»ΠΈ
TΡΠ²Π»ΡΠ΅ΡΡΡ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠΌ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², Π° ΡΠΏΠΈΡΠΎΠΊ-ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ-Π²-ΡΠΈΠ³ΡΡΠ½ΡΡ -ΡΠΊΠΎΠ±ΠΊΠ°Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ, ΡΠ²Π»ΡΡΡΠΈΠΉΡΡ ΡΡΡΠΎΠΊΠΎΠ²ΡΠΌ Π»ΠΈΡΠ΅ΡΠ°Π»ΠΎΠΌ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΡΠΈΠΏΠ°, ΠΌΠ°ΡΡΠΈΠ² ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅ΡΡΡ ΠΈΠ· ΡΡΡΠΎΠΊΠΎΠ²ΠΎΠ³ΠΎ Π»ΠΈΡΠ΅ΡΠ°Π»Π°, ΠΊΠ°ΠΊ ΠΎΠ±ΡΡΠ½ΠΎ.
- ΠΠ½Π°ΡΠ΅, Π΅ΡΠ»ΠΈ
TΡΠ²Π»ΡΠ΅ΡΡΡ Π°Π³ΡΠ΅Π³Π°ΡΠ½ΡΠΌ ΡΠΈΠΏΠΎΠΌ, Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π°Π³ΡΠ΅Π³Π°ΡΠ½Π°Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ.
- ΠΠ½Π°ΡΠ΅, Π΅ΡΠ»ΠΈ ΡΠΏΠΈΡΠΎΠΊ-ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ-Π²-ΡΠΈΠ³ΡΡΠ½ΡΡ
-ΡΠΊΠΎΠ±ΠΊΠ°Ρ
ΠΏΡΡΡ ΠΈ
TΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΈΠΏΠΎΠΌ ΠΊΠ»Π°ΡΡΠ° Ρ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠΎΠΌ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ.
- ΠΠ½Π°ΡΠ΅, Π΅ΡΠ»ΠΈ
TΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ std::initializer_list, ΠΎΠ±ΡΠ΅ΠΊΡTtheTΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅ΡΡΡ, ΠΊΠ°ΠΊ Π·Π°Π΄Π°Π½ΠΎ Π·Π΄Π΅ΡΡ.
- ΠΠ½Π°ΡΠ΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΡ
TΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡΡΡ Π² Π΄Π²Π° ΡΡΠ°ΠΏΠ°:
- ΠΡΠ΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ std::initializer_list Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° ΠΈΠ»ΠΈ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°, Π΅ΡΠ»ΠΈ ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ ΠΈΠΌΠ΅ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, ΠΏΡΠΎΠ²Π΅ΡΡΡΡΡΡ ΠΈ ΡΠΎΠΏΠΎΡΡΠ°Π²Π»ΡΡΡΡΡ ΠΏΡΡΡΠΌ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅Π³ΡΡΠ·ΠΊΠΈ Ρ ΠΎΠ΄Π½ΠΈΠΌ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠΌ ΡΠΈΠΏΠ° std::initializer_list
- ΠΡΠ»ΠΈ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΉ ΡΡΠ°ΠΏ Π½Π΅ Π΄Π°Π΅Ρ ΡΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΡ, Π²ΡΠ΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΡ
TΡΡΠ°ΡΡΠ²ΡΡΡ Π² ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠΈ ΠΏΠ΅ΡΠ΅Π³ΡΡΠ·ΠΊΠΈ Π΄Π»Ρ Π½Π°Π±ΠΎΡΠ° Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ², ΡΠΎΡΡΠΎΡΡΠ΅Π³ΠΎ ΠΈΠ· ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΡΠΏΠΈΡΠΊΠ°-ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ-Π²-ΡΠΈΠ³ΡΡΠ½ΡΡ ΡΠΊΠΎΠ±ΠΊΠ°Ρ , Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ΠΌ, ΡΡΠΎ Π΄ΠΎΠΏΡΡΡΠΈΠΌΡ ΡΠΎΠ»ΡΠΊΠΎ Π½Π΅ ΡΡΠΆΠ°ΡΡΠΈΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΠΡΠ»ΠΈ Π½Π° ΡΡΠΎΠΌ ΡΡΠ°ΠΏΠ΅ ΡΠΎΠ·Π΄Π°ΡΡΡΡ ΡΠ²Π½ΡΠΉ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΊΠ°ΠΊ Π½Π°ΠΈΠ»ΡΡΡΠ΅Π΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ Π΄Π»Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠΏΠΈΡΠΊΠ°, ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ Π·Π°Π²Π΅ΡΡΠΈΡΡΡ ΠΎΡΠΈΠ±ΠΊΠΎΠΉ (ΠΎΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΠΏΡΠΈ ΠΏΡΠΎΡΡΠΎΠΉ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠ²Π½ΡΠ΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΡ Π²ΠΎΠΎΠ±ΡΠ΅ Π½Π΅ ΡΡΠΈΡΡΠ²Π°ΡΡΡΡ).
- ΠΡΠ»ΠΈ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΉ ΡΡΠ°ΠΏ Π½Π΅ Π΄Π°Π΅Ρ ΡΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΡ, Π²ΡΠ΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΡ
|
(Π½Π°ΡΠΈΠ½Π°Ρ Ρ C++17) |
- ΠΠ½Π°ΡΠ΅ (Π΅ΡΠ»ΠΈ
TΠ½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΈΠΏΠΎΠΌ ΠΊΠ»Π°ΡΡΠ°), Π΅ΡΠ»ΠΈ ΡΠΏΠΈΡΠΎΠΊ-ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ-Π²-ΡΠΈΠ³ΡΡΠ½ΡΡ ΡΠΊΠΎΠ±ΠΊΠ°Ρ ΠΈΠΌΠ΅Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΈ Π»ΠΈΠ±ΠΎTΠ½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΡΠ»ΠΎΡΠ½ΡΠΌ ΡΠΈΠΏΠΎΠΌ, Π»ΠΈΠ±ΠΎ ΡΡΡΠ»ΠΎΡΠ½ΡΠΌ ΡΠΈΠΏΠΎΠΌ, ΡΡΡΠ»ΠΎΡΠ½ΡΠΉ ΡΠΈΠΏ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠ°ΠΊΠΎΠΉ ΠΆΠ΅ ΠΊΠ°ΠΊ ΠΈΠ»ΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ Π±Π°Π·ΠΎΠ²ΡΠΌ ΠΊΠ»Π°ΡΡΠΎΠΌ ΡΠΈΠΏΠ° ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°,Tis ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅ΡΡΡ Π½Π°ΠΏΡΡΠΌΡΡ (ΠΏΡΠΈ ΠΏΡΡΠΌΠΎΠΉ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠΏΠΈΡΠΊΠΎΠΌ) or ΠΈΠ»ΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅ΡΡΡ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ (ΠΏΡΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠΏΠΈΡΠΊΠ°), Π·Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΡΡΠΆΠ°ΡΡΠΈΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ Π½Π΅ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½Ρ.
- ΠΠ½Π°ΡΠ΅, Π΅ΡΠ»ΠΈ
TΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΡΠ»ΠΎΡΠ½ΡΠΌ ΡΠΈΠΏΠΎΠΌ, Π½Π΅ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΡΠΌ Ρ ΡΠΈΠΏΠΎΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°:
|
(Π΄ΠΎ C++17) |
|
(Π½Π°ΡΠΈΠ½Π°Ρ Ρ C++17) |
- ΠΠ½Π°ΡΠ΅, Π΅ΡΠ»ΠΈ ΡΠΏΠΈΡΠΎΠΊ-ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ-Π²-ΡΠΈΠ³ΡΡΠ½ΡΡ
-ΡΠΊΠΎΠ±ΠΊΠ°Ρ
Π½Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ²,
TΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ.
ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠΏΠΈΡΠΊΠΎΠΌ std::initializer_list
ΠΠ±ΡΠ΅ΠΊΡ ΡΠΈΠΏΠ° std::initializer_list<E> ΡΠΎΠ·Π΄Π°ΡΡΡΡ ΠΈΠ· ΡΠΏΠΈΡΠΊΠ° ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡΠΎΠ², ΠΊΠ°ΠΊ Π΅ΡΠ»ΠΈ Π±Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π» ΠΈ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π» (Π½Π°ΡΠΈΠ½Π°Ρ Ρ C++17) prvalue ΡΠΈΠΏΠ° βΠΌΠ°ΡΡΠΈΠ² N const Eβ, Π³Π΄Π΅ N ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π² ΡΠΏΠΈΡΠΊΠ΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡΠΎΠ²; ΡΡΠΎ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΡΠ΅Π·Π΅ΡΠ²Π½ΡΠΌ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠΌ ΡΠΏΠΈΡΠΊΠ° ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡΠΎΠ².
ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΡΠ΅Π·Π΅ΡΠ²Π½ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π° ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅ΡΡΡ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΡΠΏΠΈΡΠΊΠ° ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡΠΎΠ², Π° ΠΎΠ±ΡΠ΅ΠΊΡ std::initializer_list<E> ΡΠΎΠ·Π΄Π°ΡΡΡΡ Π΄Π»Ρ ΡΡΡΠ»ΠΊΠΈ Π½Π° ΡΡΠΎΡ ΠΌΠ°ΡΡΠΈΠ². ΠΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΈΠ»ΠΈ ΡΡΠ½ΠΊΡΠΈΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ, Π²ΡΠ±ΡΠ°Π½Π½Π°Ρ Π΄Π»Ρ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ Π΄ΠΎΡΡΡΠΏΠ½Π° Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ ΡΠΏΠΈΡΠΊΠ° ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡΠΎΠ². ΠΡΠ»ΠΈ Π΄Π»Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π»ΡΠ±ΠΎΠ³ΠΎ ΠΈΠ· ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΡΠΆΠ°ΡΡΠ΅Π΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅, ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π½Π΅ΠΊΠΎΡΡΠ΅ΠΊΡΠ½Π°.
Π Π΅Π·Π΅ΡΠ²Π½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² ΠΈΠΌΠ΅Π΅Ρ ΡΠ°ΠΊΠΎΠ΅ ΠΆΠ΅ Π²ΡΠ΅ΠΌΡ ΠΆΠΈΠ·Π½ΠΈ, ΠΊΠ°ΠΊ ΠΈ Π»ΡΠ±ΠΎΠΉ Π΄ΡΡΠ³ΠΎΠΉ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ, Π·Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° std::initializer_list ΠΈΠ· ΡΠ΅Π·Π΅ΡΠ²Π½ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π° ΠΏΡΠΎΠ΄Π»Π΅Π²Π°Π΅Ρ Π²ΡΠ΅ΠΌΡ ΠΆΠΈΠ·Π½ΠΈ ΠΌΠ°ΡΡΠΈΠ²Π° ΡΠΎΡΠ½ΠΎ ΡΠ°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΏΡΠΈΠ²ΡΠ·ΠΊΠ° ΡΡΡΠ»ΠΊΠΈ ΠΊ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΌΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ.
void f(std::initializer_list<double> il);
void g(float x)
{
f({1, x, 3});
}
void h()
{
f({1, 2, 3});
}
struct A { mutable int i; };
void q(std::initializer_list<A>);
void r()
{
q({A{1}, A{2}, A{3}});
}
// ΠΡΠΈΠ²Π΅Π΄ΡΠ½Π½Π°Ρ Π²ΡΡΠ΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π±ΡΠ΄Π΅Ρ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ, ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΡΠΌ
// ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌΡ Π½ΠΈΠΆΠ΅, ΠΏΡΠΈ ΡΡΠ»ΠΎΠ²ΠΈΠΈ, ΡΡΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ·Π΄Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ initializer_list
// Ρ ΠΏΠ°ΡΠΎΠΉ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ, ΠΈ Ρ ΡΡΡΡΠΎΠΌ ΡΠΎΠ³ΠΎ, ΡΡΠΎ `__b` Π½Π΅ ΠΏΠ΅ΡΠ΅ΠΆΠΈΠ²ΡΡ Π²ΡΠ·ΠΎΠ² `f`.
void g(float x)
{
const double __a[3] = {double{1}, double{x}, double{3}}; // ΡΠ΅Π·Π΅ΡΠ²Π½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ²
f(std::initializer_list<double>(__a, __a + 3));
}
void h()
{
static constexpr double __b[3] =
{double{1}, double{2}, double{3}}; // ΡΠ΅Π·Π΅ΡΠ²Π½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ²
f(std::initializer_list<double>(__b, __b + 3));
}
void r()
{
const A __c[3] = {A{1}, A{2}, A{3}}; // ΡΠ΅Π·Π΅ΡΠ²Π½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ²
q(std::initializer_list<A>(__c, __c + 3));
}
ΠΡΠ΅ Π»ΠΈ ΡΠ΅Π·Π΅ΡΠ²Π½ΡΠ΅ ΠΌΠ°ΡΡΠΈΠ²Ρ ΡΠ°Π·Π»ΠΈΡΠ½Ρ (ΡΠΎ Π΅ΡΡΡ Ρ ΡΠ°Π½ΡΡΡΡ Π² Π½Π΅ΠΏΠ΅ΡΠ΅ΡΠ΅ΠΊΠ°ΡΡΠΈΡ ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°Ρ ) Π½Π΅ ΡΠΊΠ°Π·Π°Π½ΠΎ:
bool fun(std::initializer_list<int> il1, std::initializer_list<int> il2)
{
return il2.begin() == il1.begin() + 1;
}
bool overlapping = fun({1, 2, 3}, {2, 3, 4}); // ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π½Π΅ ΡΠΊΠ°Π·Π°Π½: ΡΠ΅Π·Π΅ΡΠ²Π½ΡΠ΅
// ΠΌΠ°ΡΡΠΈΠ²Ρ ΠΌΠΎΠ³ΡΡ ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ
// Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ Π² ΠΏΡΠ΅Π΄Π΅Π»Π°Ρ
{1, 2, 3, 4}
Π‘ΡΠΆΠ°ΡΡΠΈΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ
ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠΏΠΈΡΠΊΠ° ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΠ²Π°Π΅Ρ ΡΠ°Π·ΡΠ΅ΡΡΠ½Π½ΡΠ΅ Π½Π΅ΡΠ²Π½ΡΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ Π·Π°ΠΏΡΠ΅ΡΠ°Ρ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
- ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ· ΡΠΈΠΏΠ° Ρ ΠΏΠ»Π°Π²Π°ΡΡΠ΅ΠΉ Π·Π°ΠΏΡΡΠΎΠΉ Π² ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΠΉ ΡΠΈΠΏ
|
(Π΄ΠΎ C++23) |
|
(Π½Π°ΡΠΈΠ½Π°Ρ Ρ C++23) |
- ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ· ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° Π² ΡΠΈΠΏ Ρ ΠΏΠ»Π°Π²Π°ΡΡΠ΅ΠΉ Π·Π°ΠΏΡΡΠΎΠΉ, Π·Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅Π², ΠΊΠΎΠ³Π΄Π° ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΎΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ½ΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ΅Ρ Ρ ΡΠ°Π½ΠΈΡΡΡΡ ΡΠΎΡΠ½ΠΎ Π² ΡΠ΅Π»Π΅Π²ΠΎΠΌ ΡΠΈΠΏΠ΅
- ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ· ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° ΠΈΠ»ΠΈ ΡΠΈΠΏΠ° ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΡ Ρ Π½Π΅Π·Π°Π΄Π°Π½Π½ΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΡΡ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ Π² ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΠΉ ΡΠΈΠΏ, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡΡ Π²ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»Π°, Π·Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅Π², ΠΊΠΎΠ³Π΄Π° ΠΈΡΡΠΎΡΠ½ΠΈΠΊ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ½ΡΠΌ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ, Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ΅Ρ Ρ ΡΠ°Π½ΠΈΡΡΡΡ ΡΠΎΡΠ½ΠΎ Π² ΡΠ΅Π»Π΅Π²ΠΎΠΌ ΡΠΈΠΏΠ΅
- ΠΈΡΡΠΎΡΠ½ΠΈΠΊ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ Π±ΠΈΡΠΎΠ²ΠΎΠ΅ ΠΏΠΎΠ»Π΅ , ΡΠΈΡΠΈΠ½Π°
wΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΌΠ΅Π½ΡΡΠ΅ ΡΠΈΡΠΈΠ½Ρ Π΅Π³ΠΎ ΡΠΈΠΏΠ° (ΠΈΠ»ΠΈ, Π΄Π»Ρ ΡΠΈΠΏΠ° ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΡ, Π»Π΅ΠΆΠ°ΡΠ΅Π³ΠΎ Π² ΠΎΡΠ½ΠΎΠ²Π΅ Π΅Π³ΠΎ ΡΠΈΠΏΠ°) ΠΈ ΡΠ΅Π»Π΅Π²ΠΎΠΉ ΡΠΈΠΏ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ Π²ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π³ΠΈΠΏΠΎΡΠ΅ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠ°ΡΡΠΈΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° Ρ ΡΠΈΡΠΈΠ½ΠΎΠΉwΠΈ Ρ ΡΠ΅ΠΌ ΠΆΠ΅ Π·Π½Π°ΠΊΠΎΠΌ, ΡΡΠΎ ΠΈ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΡΠΈΠΏ, ΠΈΠ»ΠΈ
- ΠΈΡΡΠΎΡΠ½ΠΈΠΊ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ Π±ΠΈΡΠΎΠ²ΠΎΠ΅ ΠΏΠΎΠ»Π΅ , ΡΠΈΡΠΈΠ½Π°
- ΠΈΡΡΠΎΡΠ½ΠΈΠΊ ΡΡΠΎ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ½ΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ΅Ρ Ρ ΡΠ°Π½ΠΈΡΡΡΡ ΡΠΎΡΠ½ΠΎ Π² ΡΠ΅Π»Π΅Π²ΠΎΠΌ ΡΠΈΠΏΠ΅
- ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΈΠΏΠ° ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ ΠΈΠ»ΠΈ ΡΠΈΠΏΠ° ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π²
bool
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅
ΠΠ°ΠΆΠ΄ΠΎΠ΅ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡΠ° ΡΠ°ΡΠΏΠΎΠ»Π°Π³Π°Π΅ΡΡΡ ΠΏΠ΅ΡΠ΅Π΄ Π»ΡΠ±ΡΠΌ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡΠ°, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΡΠ»Π΅Π΄ΡΠ΅Ρ Π·Π° Π½ΠΈΠΌ Π² ΡΠΏΠΈΡΠΊΠ΅-ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ-Ρ-ΡΠΈΠ³ΡΡΠ½ΡΠΌΠΈ-ΡΠΊΠΎΠ±ΠΊΠ°ΠΌΠΈ. ΠΡΠΎ ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ Π²ΡΠ·ΠΎΠ²Π° ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΠΈΠΌΠ΅ΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ (Π΄ΠΎ C++17)ΠΈΠΌΠ΅ΡΡ Π½Π΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ (Π½Π°ΡΠΈΠ½Π°Ρ Ρ C++17).
Π‘ΠΏΠΈΡΠΎΠΊ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π² ΡΠΈΠ³ΡΡΠ½ΡΡ
ΡΠΊΠΎΠ±ΠΊΠ°Ρ
Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΈ, ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ ΡΠΈΠΏΠ°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ decltype({1,2}) Π½Π΅ Π²Π΅ΡΠ½ΠΎ. ΠΡΡΡΡΡΡΠ²ΠΈΠ΅ ΡΠΈΠΏΠ° ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π²ΡΠ²ΠΎΠ΄ ΡΠΈΠΏΠ° ΡΠ°Π±Π»ΠΎΠ½Π° Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ²Π΅ΡΡΠΈ ΡΠΈΠΏ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ ΡΠΏΠΈΡΠΊΡ-ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ-Π²-ΡΠΈΠ³ΡΡΠ½ΡΡ
-ΡΠΊΠΎΠ±ΠΊΠ°Ρ
, ΠΏΠΎΡΡΠΎΠΌΡ ΠΏΡΠΈ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠΈ template<class T> void f(T); Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ f({1,2,3}) Π½Π΅ Π²Π΅ΡΠ½ΠΎ. ΠΠ΄Π½Π°ΠΊΠΎ Π² ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΡΠ°Π±Π»ΠΎΠ½Π° ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠ²Π΅ΡΡΠΈ, ΠΊΠ°ΠΊ Π² ΡΠ»ΡΡΠ°Π΅ Ρ std::vector<int> v(std::istream_iterator<int>(std::cin), {}), Π³Π΄Π΅ ΡΠΈΠΏ ΠΈΡΠ΅ΡΠ°ΡΠΎΡΠ° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΠΏΠ΅ΡΠ²ΡΠΌ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠΌ, Π½ΠΎ ΡΠ°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π²ΠΎ Π²ΡΠΎΡΠΎΠΉ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°. Π‘ΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎΠ΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ΄Π΅Π»Π°Π½ΠΎ Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π° ΡΠΈΠΏΠ° Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ³ΠΎ ΡΠ»ΠΎΠ²Π° auto , ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²ΡΠ²ΠΎΠ΄ΠΈΡ Π»ΡΠ±ΠΎΠΉ ΡΠΏΠΈΡΠΎΠΊ-ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ-Π²-ΡΠΈΠ³ΡΡΠ½ΡΡ
-ΡΠΊΠΎΠ±ΠΊΠ°Ρ
ΠΊΠ°ΠΊ std::initializer_list Π² ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ-ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ-ΡΠΏΠΈΡΠΊΠ°.
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΠΏΠΈΡΠΎΠΊ-ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ-Π²-ΡΠΈΠ³ΡΡΠ½ΡΡ -ΡΠΊΠΎΠ±ΠΊΠ°Ρ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ ΡΠΈΠΏΠ°, ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π° ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅Π³ΡΡΠ·ΠΊΠΈ ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° Π΄Π»Ρ Π²ΡΠ·ΠΎΠ²Π° ΠΏΠ΅ΡΠ΅Π³ΡΡΠΆΠ΅Π½Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ.
ΠΠ³ΡΠ΅Π³Π°ΡΠ½ΡΠ΅ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅/ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΡΡΡ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΠΈΠ· ΠΎΠ΄Π½ΠΎΡΠ»Π΅ΠΌΠ΅Π½ΡΠ½ΠΎΠ³ΠΎ ΡΠΏΠΈΡΠΊΠ°-ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ-Π²-ΡΠΈΠ³ΡΡΠ½ΡΡ -ΡΠΊΠΎΠ±ΠΊΠ°Ρ ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΡΠΈΠΏΠ°, Π½ΠΎ Π½Π΅Π°Π³ΡΠ΅Π³Π°ΡΡ ΡΠ½Π°ΡΠ°Π»Π° ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΡ std::initializer_list:
struct X {}; // Π°Π³ΡΠ΅Π³Π°Ρ
struct Q // Π½Π΅ Π°Π³ΡΠ΅Π³Π°Ρ
{
Q() = default;
Q(Q const&) = default;
Q(std::initializer_list<Q>) {}
};
int main()
{
X x;
X x2 = X{x}; // ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ (Π½Π΅ Π°Π³ΡΠ΅Π³Π°ΡΠ½Π°Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ)
Q q;
Q q2 = Q{q}; // ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠΏΠΈΡΠΊΠΎΠΌ (Π½Π΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ)
}
ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, gcc 10) Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ C++20 ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ ΠΈΠ»ΠΈ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π² ΡΡΠΆΠ΅Π½ΠΈΠ΅ bool.
| ΠΠ°ΠΊΡΠΎΡ Π’Π΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΠΈ | ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ | Π‘ΡΠ°Π½Π΄Π°ΡΡ | Π€ΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ |
|---|---|---|---|
__cpp_initializer_lists |
200806L |
(C++11) | Π‘ΠΏΠΈΡΠΎΠΊ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΈ std::initializer_list |
ΠΡΠΈΠΌΠ΅Ρ
#include <iostream>
#include <map>
#include <string>
#include <vector>
struct Foo
{
std::vector<int> mem = {1, 2, 3}; // ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠΏΠΈΡΠΊΠΎΠΌ Π½Π΅ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°
std::vector<int> mem2;
Foo() : mem2{-1, -2, -3} {} // ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΡΠΏΠΈΡΠΊΠΎΠΌ Π² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ΅
};
std::pair<std::string, std::string> f(std::pair<std::string, std::string> p)
{
return {p.second, p.first}; // ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠΏΠΈΡΠΊΠΎΠΌ Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ΅ return
}
int main()
{
int n0{}; // ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ (Π² Π½ΠΎΠ»Ρ)
int n1{1}; // ΠΏΡΡΠΌΠ°Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠΏΠΈΡΠΊΠΎΠΌ
std::string s1{'a', 'b', 'c', 'd'}; // Π²ΡΠ·ΠΎΠ² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠΏΠΈΡΠΊΠΎΠΌ
std::string s2{s1, 2, 2}; // Π²ΡΠ·ΠΎΠ² ΠΎΠ±ΡΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ°
std::string s3{0x61, 'a'}; // ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠΏΠΈΡΠΊΠΎΠΌ ΠΏΡΠ΅Π΄ΠΏΠΎΡΡΠΈΡΠ΅Π»ΡΠ½Π΅Π΅
// Π΄Π»Ρ (int, char)
int n2 = {1}; // ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠΏΠΈΡΠΊΠ°
double d = double{1.2}; // ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠΏΠΈΡΠΊΠΎΠΌ prvalue, Π·Π°ΡΠ΅ΠΌ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ
// ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ
auto s4 = std::string{"ΠΡΠΈΠ²Π΅ΡΠΠΈΡ"}; // ΡΠΎ ΠΆΠ΅, ΡΡΠΎ ΠΈ Π²ΡΡΠ΅, Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ
// Π½Π΅ ΡΠΎΠ·Π΄Π°ΡΡΡΡ Π½Π°ΡΠΈΠ½Π°Ρ Ρ C++17
std::map<int, std::string> m = // ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΠΌ ΡΠΏΠΈΡΠΊΠΎΠΌ
{
{1, "a"},
{2, {'a', 'b', 'c'}},
{3, s1}
};
std::cout << f({"ΠΏΡΠΈΠ²Π΅Ρ", "ΠΌΠΈΡ"}).first // ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠΏΠΈΡΠΊΠΎΠΌ Π² Π²ΡΠ·ΠΎΠ²Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ
<< '\n';
const int (&ar)[2] = {1, 2}; // ΠΏΡΠΈΠ²ΡΠ·ΡΠ²Π°Π΅Ρ ΡΡΡΠ»ΠΊΡ lvalue ΠΊ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΌΡ ΠΌΠ°ΡΡΠΈΠ²Ρ
int&& r1 = {1}; // ΠΏΡΠΈΠ²ΡΠ·ΡΠ²Π°Π΅Ρ ΡΡΡΠ»ΠΊΡ rvalue ΠΊ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΌΡ int
// int& r2 = {2}; // ΠΎΡΠΈΠ±ΠΊΠ°: Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΠ²ΡΠ·Π°ΡΡ rvalue Ρ Π½Π΅ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ½ΠΎΠΉ ΡΡΡΠ»ΠΊΠΎΠΉ lvalue
// int bad{1.0}; // ΠΎΡΠΈΠ±ΠΊΠ°: ΡΡΠΆΠ°ΡΡΠ΅Π΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅
unsigned char uc1{10}; // ok
// unsigned char uc2{-1}; // ΠΎΡΠΈΠ±ΠΊΠ°: ΡΡΠΆΠ°ΡΡΠ΅Π΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅
Foo f;
std::cout << n0 << ' ' << n1 << ' ' << n2 << '\n'
<< s1 << ' ' << s2 << ' ' << s3 << '\n';
for(auto p: m)
std::cout << p.first << ' ' << p.second << '\n';
for(auto n: f.mem)
std::cout << n << ' ';
for(auto n: f.mem2)
std::cout << n << ' ';
[](...){}(d, ar, r1, uc1); // ΠΈΠΌΠ΅Π΅Ρ ΡΡΡΠ΅ΠΊΡ [[maybe_unused]]
}
ΠΡΠ²ΠΎΠ΄:
ΠΌΠΈΡ
0 1 1
abcd cd aa
1 a
2 abc
3 abcd
1 2 3 -1 -2 -3
ΠΡΡΡΡΡ ΠΎ Π΄Π΅ΡΠ΅ΠΊΡΠ°Ρ
Π‘Π»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ Π±ΡΠ»ΠΈ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½Ρ Ρ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΉ ΡΠΈΠ»ΠΎΠΉ ΠΊ ΡΠ°Π½Π΅Π΅ ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π½ΡΠΌ ΡΡΠ°Π½Π΄Π°ΡΡΠ°ΠΌ C++:
| ΠΠΎΠΌΠ΅Ρ | ΠΡΠΈΠΌΠ΅Π½ΡΠ½ | ΠΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ΅ | ΠΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ |
|---|---|---|---|
| CWG 1288 | C++11 | ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΡΡΠ»ΠΊΠΈ ΠΎΠ΄Π½ΠΎΡΠ»Π΅ΠΌΠ΅Π½ΡΠ½ΡΠΌ ΡΠΏΠΈΡΠΊΠΎΠΌ-ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ- Π²-ΡΠΈΠ³ΡΡΠ½ΡΡ -ΡΠΊΠΎΠ±ΠΊΠ°Ρ Π²ΡΠ΅Π³Π΄Π° ΡΠ²ΡΠ·ΡΠ²Π°Π»Π° ΡΡΡΠ»ΠΊΡ Ρ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ |
ΠΏΡΠΈΠ²ΡΠ·ΡΠ²Π°Π΅Ρ ΠΊ ΡΡΠΎΠΌΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ, Π΅ΡΠ»ΠΈ ΠΎΠ½ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»Π΅Π½ |
| CWG 1290 | C++11 | Π²ΡΠ΅ΠΌΡ ΠΆΠΈΠ·Π½ΠΈ ΡΠ΅Π·Π΅ΡΠ²Π½ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π° ΡΠΊΠ°Π·Π°Π½ΠΎ Π½Π΅Π²Π΅ΡΠ½ΠΎ | ΡΠΊΠ°Π·Π°Π½ΠΎ ΡΠ°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ Π΄ΡΡΠ³ΠΈΡ
Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² |
| CWG 1324 | C++11 | ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΡΡΡ ΠΏΠ΅ΡΠ²ΠΎΠΉ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π΄Π»Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΈΠ· {}
|
Π°Π³ΡΠ΅Π³Π°ΡΠ½Π°Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΡΡΡ ΠΏΠ΅ΡΠ²ΠΎΠΉ |
| CWG 1418 | C++11 | ΡΠΈΠΏ ΡΠ΅Π·Π΅ΡΠ²Π½ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π° Π½Π΅ ΠΈΠΌΠ΅Π» const
|
const Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ
|
| CWG 1467 | C++11 | Π·Π°ΠΏΡΠ΅ΡΠ΅Π½Π° ΠΎΠ΄Π½ΠΎΡΠΈΠΏΠ½Π°Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π°Π³ΡΠ΅Π³Π°ΡΠΎΠ² ΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΡΠ½ΡΡ
ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ²; ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠΏΠΈΡΠΊΠΎΠΌ ΠΈΠΌΠ΅Π»ΠΈ ΠΏΡΠΈΠΎΡΠΈΡΠ΅Ρ Π½Π°Π΄ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ°ΠΌΠΈ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄Π»Ρ ΠΎΠ΄Π½ΠΎΡΠ»Π΅ΠΌΠ΅Π½ΡΠ½ΡΡ ΡΠΏΠΈΡΠΊΠΎΠ² |
ΡΠ°Π·ΡΠ΅ΡΠ΅Π½Π° ΠΎΠ΄Π½ΠΎΡΠΈΠΏΠ½Π°Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ; ΠΎΠ΄Π½ΠΎΡΠ»Π΅ΠΌΠ΅Π½ΡΠ½ΡΠ΅ ΡΠΏΠΈΡΠΊΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΡΡΡΡ Π½Π°ΠΏΡΡΠΌΡΡ |
| CWG 1494 | C++11 | ΠΏΡΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠΏΠΈΡΠΊΠ° ΡΡΡΠ»ΠΊΠΎΠΉ Π½Π° ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π½Π΅ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΠ³ΠΎ ΡΠΈΠΏΠ° Π±ΡΠ»ΠΎ Π½Π΅ ΡΠΊΠ°Π·Π°Π½ΠΎ, ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΠΈ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΠΎΠ·Π΄Π°Π½Π½ΡΠΌ ΠΏΡΡΠΌΠΎΠΉ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ ΡΠΏΠΈΡΠΊΠΎΠΌ ΠΈΠ»ΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠΏΠΈΡΠΊΠ° |
ΡΡΠΎ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΡΠΈΠΏΠ° ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π΄Π»Ρ ΡΡΡΠ»ΠΊΠΈ |
| CWG 2137 | C++11 | ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠΏΠΈΡΠΊΠΎΠΌ ΡΠ΅ΡΡΡΡΡΡ Π΄Π»Ρ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠΎΠ² ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ X ΡΠΏΠΈΡΠΊΠΎΠΌ ΠΈΠ· {X}
|
ΡΠ½Π°ΡΠ°Π»Π° ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ Π½Π΅Π°Π³ΡΠ΅Π³Π°ΡΠ½ΡΠ΅ ΡΠΏΠΈΡΠΊΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡΠΎΠ² |
| CWG 2267 | C++11 | ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ CWG ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° 1494 Π΄Π°Π»ΠΎ ΠΏΠΎΠ½ΡΡΡ, ΡΡΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Ρ ΡΠΏΠΈΡΠΊΠΎΠΌ Π½Π°ΠΏΡΡΠΌΡΡ |
ΠΎΠ½ΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΡΡΡΡ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠΏΠΈΡΠΊΠ° ΠΏΡΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΡΡΠ»ΠΎΠΊ ΡΠΏΠΈΡΠΊΠΎΠΌ |
| CWG 2374 | C++17 | ΠΏΡΡΠΌΠ°Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΡ ΡΠΏΠΈΡΠΊΠΎΠΌ Π΄ΠΎΠΏΡΡΠΊΠ°Π»Π° ΡΠ»ΠΈΡΠΊΠΎΠΌ ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΡΡ ΠΎΠ΄Π½ΡΡ ΡΠΈΠΏΠΎΠ² |
ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΎ |
| CWG 2627 | C++11 | ΡΠ·ΠΊΠΎΠ΅ Π±ΠΈΡΠΎΠ²ΠΎΠ΅ ΠΏΠΎΠ»Π΅ Π±ΠΎΠ»ΡΡΠ΅Π³ΠΎ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΎ Π² ΠΌΠ΅Π½ΡΡΠΈΠΉ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΠΉ ΡΠΈΠΏ, Π½ΠΎ ΡΡΠΎ Π²ΡΡ Π΅ΡΡ ΡΡΠΆΠ°ΡΡΠ΅Π΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ |
ΡΡΠΎ Π½Π΅ ΡΡΠΆΠ°ΡΡΠ΅Π΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ |
| WG Π½Π΅ ΡΠΊΠ°Π·Π°Π½ | C++11 | ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ· ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ/ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π² boolΠ½Π΅ ΡΡΠΆΠ°Π»ΠΎ |
ΡΠ΄Π΅Π»Π°Π½ΠΎ ΡΡΠΆΠ°ΡΡΠΈΠΌ |
| WG Π½Π΅ ΡΠΊΠ°Π·Π°Π½ | C++11 | ΡΠ΅Π·Π΅ΡΠ²Π½ΡΠ΅ ΠΌΠ°ΡΡΠΈΠ²Ρ Ρ ΠΏΠ΅ΡΠ΅ΠΊΡΡΠ²Π°ΡΡΠΈΠΌΡΡ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ ΠΆΠΈΠ·Π½ΠΈ Π½Π΅ ΠΌΠΎΠ³ΡΡ ΠΏΠ΅ΡΠ΅ΡΠ΅ΠΊΠ°ΡΡΡΡ |
ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡΡ ΠΏΠ΅ΡΠ΅ΡΠ΅ΠΊΠ°ΡΡΡΡ |
Π‘ΠΌΠΎΡΡΠΈΡΠ΅ ΡΠ°ΠΊΠΆΠ΅
- ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ
- ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΡΡΡΠΈΠΉ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ
- ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ
- ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ
- ΠΏΡΠΎΠΏΡΡΠΊ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ
- ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ
explicit- ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ
- Π°Π³ΡΠ΅Π³Π°ΡΠ½Π°Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ
- ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ½Π°Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ
- ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ
- ΠΏΡΡΠΌΠ°Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ
- ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΡΡΠ»ΠΊΠΎΠΉ
- ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ
- ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π½ΡΠ»ΡΠΌ
- ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ
- ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΡ
new