ΠΠΊΠΎ Π² Π½Π°ΡΠ°Π»ΠΎΡΠΎ Π½Π° ΠΏΠΈΠ΅ΡΠ°ΡΠ° ΠΊΠ°Π·Π²Π°ΡΠ΅, ΡΠ΅ Π½Π° ΡΡΠ΅Π½Π°ΡΠ° Π²ΠΈΡΠΈ ΠΊΠΎΠ΄ Π½Π° C++, ΡΠΎ Π² ΠΊΡΠ°ΠΉΠ½Π° ΡΠΌΠ΅ΡΠΊΠ° ΡΠΎΠΉ Π·Π°Π΄ΡΠ»ΠΆΠΈΡΠ΅Π»Π½ΠΎ ΡΡΡΠ±Π²Π° Π΄Π° Π²ΠΈ Π·Π°ΡΡΡΠ΅Π»Ρ Π² ΠΊΡΠ°ΠΊΠ°.
ΠΡΡΠ½Π΅ Π‘ΡΡΠΎΡΡΡΡΡΠΏ
ΠΡ 31-Π²ΠΈ ΠΎΠΊΡΠΎΠΌΠ²ΡΠΈ Π΄ΠΎ 1-Π²ΠΈ Π½ΠΎΠ΅ΠΌΠ²ΡΠΈ Π² Π‘Π°Π½ΠΊΡ ΠΠ΅ΡΠ΅ΡΠ±ΡΡΠ³ ΡΠ΅ ΠΏΡΠΎΠ²Π΅Π΄Π΅ ΠΊΠΎΠ½ΡΠ΅ΡΠ΅Π½ΡΠΈΡ C++ Π ΡΡΠΈΡ ΠΠΈΡΠ΅Ρ β Π΅Π΄Π½Π° ΠΎΡ ΠΌΠ°ΡΠ°Π±Π½ΠΈΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΡΠ΅Π½ΡΠΈΠΈ ΠΏΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅ Π² Π ΡΡΠΈΡ, ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΈΡΠ°Π½Π° ΠΎΡ JUG Ru Group. Π‘ΡΠ΅Π΄ ΠΏΠΎΠΊΠ°Π½Π΅Π½ΠΈΡΠ΅ Π»Π΅ΠΊΡΠΎΡΠΈ ΡΠ° ΡΠ»Π΅Π½ΠΎΠ²Π΅ Π½Π° ΠΊΠΎΠΌΠΈΡΠ΅ΡΠ° Π·Π° ΡΡΠ°Π½Π΄Π°ΡΡΠΈΠ·Π°ΡΠΈΡ Π½Π° C++, Π»Π΅ΠΊΡΠΎΡΠΈ ΠΎΡ CppCon, Π°Π²ΡΠΎΡΠΈ Π½Π° ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΡ ΠΈΠ·Π΄Π°ΡΠ΅Π»ΡΡΠ²ΠΎ OβReilly, ΠΊΠ°ΠΊΡΠΎ ΠΈ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°ΡΠΈ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠΈ ΠΊΠ°ΡΠΎ LLVM, libc++ ΠΈ Boost. ΠΠΎΠ½ΡΠ΅ΡΠ΅Π½ΡΠΈΡΡΠ° Π΅ Π½Π°ΡΠΎΡΠ΅Π½Π° ΠΊΡΠΌ ΠΎΠΏΠΈΡΠ½ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈ Π½Π° C++, ΠΆΠ΅Π»Π°Π΅ΡΠΈ Π΄Π° Π·Π°Π΄ΡΠ»Π±ΠΎΡΠ°Ρ Π΅ΠΊΡΠΏΠ΅ΡΡΠΈΠ·Π°ΡΠ° ΡΠΈ ΠΈ Π΄Π° ΠΎΠ±ΠΌΠ΅Π½ΡΡ ΠΎΠΏΠΈΡ Π² ΠΆΠΈΠ²ΠΎ ΠΎΠ±ΡΡΠ²Π°Π½Π΅. ΠΠ° ΡΡΡΠ΄Π΅Π½ΡΠΈΡΠ΅, Π°ΡΠΏΠΈΡΠ°Π½ΡΠΈΡΠ΅ ΠΈ ΠΏΡΠ΅ΠΏΠΎΠ΄Π°Π²Π°ΡΠ΅Π»ΠΈΡΠ΅ Π² ΡΠ½ΠΈΠ²Π΅ΡΡΠΈΡΠ΅ΡΠΈΡΠ΅ ΡΠ΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΡΡ ΠΌΠ½ΠΎΠ³ΠΎ Π°ΡΡΠ°ΠΊΡΠΈΠ²Π½ΠΈ ΠΎΡΡΡΡΠΏΠΊΠΈ.
ΠΠΎΡΠΊΠΎΠ²ΡΠΊΠΎΡΠΎ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΡΠ΅Π½ΡΠΈΡΡΠ° ΡΠ΅ ΡΠ΅ ΠΏΡΠΎΠ²Π΅Π΄Π΅ ΠΏΡΠ΅Π· Π°ΠΏΡΠΈΠ» ΡΠ»Π΅Π΄Π²Π°ΡΠ°ΡΠ° Π³ΠΎΠ΄ΠΈΠ½Π°, Π° ΠΌΠ΅ΠΆΠ΄ΡΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ Π½Π°ΡΠΈΡΠ΅ ΡΡΡΠ΄Π΅Π½ΡΠΈ ΡΠ΅ ΡΠ°Π·ΠΊΠ°ΠΆΠ°Ρ ΠΊΠ°ΠΊΠ²ΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ Π½Π°ΡΡΠΈΡ Π° Π½Π° ΠΈΠ·ΠΌΠΈΠ½Π°Π»ΠΎΡΠΎ ΡΡΠ±ΠΈΡΠΈΠ΅.Β

Π‘Π½ΠΈΠΌΠΊΠ° ΠΎΡ
ΠΠ° Π½Π°Ρ
Π’ΠΎΠ·ΠΈ ΠΏΠΎΡΡ Π΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ΅Π½ ΠΎΡ Π΄Π²Π°ΠΌΠ° ΡΡΡΠ΄Π΅Π½ΡΠΈ ΠΎΡ ΠΠΠ£ ΠΠ¨Π β Π‘Π°Π½ΠΊΡ ΠΠ΅ΡΠ΅ΡΠ±ΡΡΠ³:
- ΠΠΈΠ·Π° ΠΠ°ΡΠΈΠ»Π΅Π½ΠΊΠΎ β ΡΡΡΠ΄Π΅Π½ΡΠΊΠ° ΠΎΡ 4-ΡΠΈ ΠΊΡΡΡ Π½Π° Π±Π°ΠΊΠ°Π»Π°Π²ΡΡΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ°, ΠΈΠ·ΡΡΠ°Π²Π°ΡΠ° Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ βΠΠ·ΠΈΡΠΈΡΠ΅ Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅ΡΠΎβ Π² ΡΠ°ΠΌΠΊΠΈΡΠ΅ Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ°ΡΠ° βΠΡΠΈΠΊΠ»Π°Π΄Π½Π° ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΠΊΠ° ΠΈ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΊΠ°β. ΠΠ°ΠΏΠΎΠ·Π½Π°Π»Π° ΡΠ΅ Ρ Π΅Π·ΠΈΠΊΠ° C++ Π½Π° ΠΏΡΡΠ²ΠΈΡ ΠΊΡΡΡ Π½Π° ΡΠ½ΠΈΠ²Π΅ΡΡΠΈΡΠ΅ΡΠ°, ΡΡ ΠΏΠΎ-ΠΊΡΡΠ½ΠΎ ΠΏΡΠΈΠ΄ΠΎΠ±ΠΈ ΠΎΠΏΠΈΡ Π² ΠΈΠ½Π΄ΡΡΡΡΠΈΡΡΠ° Ρ Π½Π΅Π³ΠΎ ΡΡΠ΅Π· ΡΡΠ°ΠΆΠΎΠ²Π΅. Π£Π²Π»Π΅ΡΠ΅Π½ΠΈΠ΅ΡΠΎ ΠΉ ΠΏΠΎ Π΅Π·ΠΈΡΠΈΡΠ΅ Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅ΡΠΎ ΠΊΠ°ΡΠΎ ΡΡΠ»ΠΎ ΠΈ ΠΎΡΠΎΠ±Π΅Π½ΠΎ ΠΏΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅ Π΅ ΠΏΠΎΠ²Π»ΠΈΡΠ»ΠΎ Π½Π° ΠΈΠ·Π±ΠΎΡΠ° ΠΉ Π½Π° Π»Π΅ΠΊΡΠΈΠΈ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΡΠ΅Π½ΡΠΈΡΡΠ°.
- ΠΠ°Π½Ρ Π‘ΠΌΠΈΡΠ½ΠΎΠ² β ΡΡΡΠ΄Π΅Π½Ρ ΠΎΡ 1-Π²ΠΈ ΠΊΡΡΡ Π½Π° ΠΌΠ°Π³ΠΈΡΡΡΠ°ΡΡΡΠ° βΠΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅ ΠΈ Π°Π½Π°Π»ΠΈΠ· Π½Π° Π΄Π°Π½Π½ΠΈβ. ΠΡΠ΅ Π² ΡΡΠΈΠ»ΠΈΡΠ΅ Π΅ ΡΠ΅ΡΠ°Π²Π°Π» ΠΎΠ»ΠΈΠΌΠΏΠΈΠ°Π΄Π½ΠΈ Π·Π°Π΄Π°ΡΠΈ Π½Π° C++, Π° ΠΏΠΎΡΠ»Π΅, ΠΏΠΎ Π½ΡΠΊΠ°ΠΊΡΠ² Π½Π°ΡΠΈΠ½, Π΅Π·ΠΈΠΊΡΡ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ ΠΈΠ·ΠΏΠ»ΡΠ²Π°Π» Π² ΡΡΠ΅Π±Π½Π°ΡΠ° Π΄Π΅ΠΉΠ½ΠΎΡΡ ΠΈ Π² ΠΊΡΠ°ΠΉΠ½Π° ΡΠΌΠ΅ΡΠΊΠ° ΡΡΠ°Π½Π°Π» ΠΎΡΠ½ΠΎΠ²Π΅Π½ ΡΠ°Π±ΠΎΡΠ΅Π½. Π Π΅ΡΠΈΠ» Π΅ Π΄Π° ΡΡΠ°ΡΡΠ²Π° Π² ΠΊΠΎΠ½ΡΠ΅ΡΠ΅Π½ΡΠΈΡΡΠ°, Π·Π° Π΄Π° ΠΏΠΎΠ΄ΠΎΠ±ΡΠΈ Π·Π½Π°Π½ΠΈΡΡΠ° ΡΠΈ ΠΈ Π΄Π° Π½Π°ΡΡΠΈ Π·Π° Π½ΠΎΠ²ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ.
Π ΡΠ°Π·ΠΏΡΠ°ΡΠΊΠΈΡΠ΅ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎΡΠΎ Π½Π° ΡΠ°ΠΊΡΠ»ΡΠ΅ΡΠ° ΡΠ΅ΡΡΠΎ ΡΠΏΠΎΠ΄Π΅Π»Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΈ ΡΡΠ±ΠΈΡΠΈΡ, ΡΠ²ΡΡΠ·Π°Π½ΠΈ Ρ Π½Π°ΡΠ°ΡΠ° ΡΠΏΠ΅ΡΠΈΠ°Π»Π½ΠΎΡΡ. ΠΡΠ΅Π· ΡΠ΅ΠΏΡΠ΅ΠΌΠ²ΡΠΈ Π²ΠΈΠ΄ΡΡ ΠΌΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° C++ Π ΡΡΠΈΡ ΠΈ ΡΠ΅ΡΠΈΡ ΠΌΠ΅ Π΄Π° ΡΠ΅ ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠ°ΠΌΠ΅ ΠΊΠ°ΡΠΎ ΡΠ»ΡΡΠ°ΡΠ΅Π»ΠΈ. Π’ΠΎΠ²Π° Π΅ Π½Π°ΡΠΈΡΡ ΠΏΡΡΠ²ΠΈ ΠΎΠΏΠΈΡ Π² ΡΡΠ°ΡΡΠΈΠ΅ Π² ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ ΠΊΠΎΠ½ΡΠ΅ΡΠ΅Π½ΡΠΈΠΈ.
Π‘ΡΡΡΠΊΡΡΡΠ° Π½Π° ΠΊΠΎΠ½ΡΠ΅ΡΠ΅Π½ΡΠΈΡΡΠ°
ΠΠ΅ΠΊΡΠΈΠΈ
Π ΡΠ°ΠΌΠΊΠΈΡΠ΅ Π½Π° Π΄Π²Π° Π΄Π½ΠΈ Π΅ΠΊΡΠΏΠ΅ΡΡΠΈΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΠΎΡ Π° 30 Π΄ΠΎΠΊΠ»Π°Π΄Π°, ΠΎΠ±ΡΡΠΆΠ΄Π°ΠΉΠΊΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Π°ΠΊΡΡΠ°Π»Π½ΠΈ ΡΠ΅ΠΌΠΈ: ΠΎΡΡΡΠΎΡΠΌΠ½ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈΡΠ΅ Π½Π° Π΅Π·ΠΈΠΊΠ° Π·Π° ΡΠ΅ΡΠ°Π²Π°Π½Π΅ Π½Π° ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π·Π°Π΄Π°ΡΠΈ, ΠΏΡΠ΅Π΄ΡΡΠΎΡΡΠΈ Π°ΠΊΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π½Π° Π΅Π·ΠΈΠΊΠ° Π²ΡΠ² Π²ΡΡΠ·ΠΊΠ° Ρ Π½ΠΎΠ²ΠΈΡ ΡΡΠ°Π½Π΄Π°ΡΡ, ΠΊΠΎΠΌΠΏΡΠΎΠΌΠΈΡΠΈ ΠΏΡΠΈ Π΄ΠΈΠ·Π°ΠΉΠ½Π° Π½Π° C++ ΠΈ ΠΌΠ΅ΡΠΊΠΈ Π·Π° Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ° Ρ ΡΠ΅Ρ Π½ΠΈΡΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΠ²ΠΈΡ, ΠΏΡΠΈΠΌΠ΅ΡΠΈ Π·Π° ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½Π° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠΈ, Π° ΡΡΡΠΎ ΡΠ°ΠΊΠ° ΠΈ Π½ΡΠΊΠΎΠΈ Π·Π°Π΄ΠΊΡΠ»ΠΈΡΠ½ΠΈ Π΄Π΅ΡΠ°ΠΉΠ»ΠΈ ΠΎΡ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ°ΡΠ° Π½Π° Π΅Π·ΠΈΠΊΠ°. Π simultaneity ΡΠ΅ ΠΏΡΠΎΠ²Π΅Π΄ΠΎΡ Π° 3 ΠΏΡΠ΅Π·Π΅Π½ΡΠ°ΡΠΈΠΈ, ΠΊΠ°ΡΠΎ Π½Π°ΠΉ-ΡΠ΅ΡΡΠΎ ΠΈΠΌΠ°ΡΠ΅ Π΄Π²Π΅ Π½Π° ΡΡΡΠΊΠΈ ΠΈ Π΅Π΄Π½Π° Π½Π° Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΈ Π΅Π·ΠΈΠΊ.
ΠΠΎΠ½ΠΈ Π·Π° Π΄ΠΈΡΠΊΡΡΠΈΠΈ
Π‘Π»Π΅Π΄ ΠΏΡΠ΅Π·Π΅Π½ΡΠ°ΡΠΈΡΡΠ° Π²ΡΠΈΡΠΊΠΈ Π½Π΅Π·Π°Π΄Π°Π½ΠΈ Π²ΡΠΏΡΠΎΡΠΈ ΠΈ Π½Π΅Π·Π°Π²ΡΡΡΠ΅Π½ΠΈ ΠΎΠ±ΡΡΠΆΠ΄Π°Π½ΠΈΡ ΡΠ΅ ΠΏΡΠ΅Π½Π°ΡΡΡ Π° Π² ΡΠΏΠ΅ΡΠΈΠ°Π»Π½ΠΎ ΠΎΡΠ΄Π΅Π»Π΅Π½ΠΈ Π·ΠΎΠ½ΠΈ Π·Π° ΠΎΠ±ΡΡΠ²Π°Π½Π΅ Ρ Π»Π΅ΠΊΡΠΎΡΠ°, ΠΎΠ±ΠΎΡΡΠ΄Π²Π°Π½ΠΈ Ρ ΠΌΠ°ΡΠΊΠ΅ΡΠ½ΠΈ Π΄ΡΡΠΊΠΈ. ΠΠΎΠ±ΡΡ Π½Π°ΡΠΈΠ½ Π΄Π° ΠΏΡΠ΅ΠΊΠ°ΡΠ°Ρ ΠΏΠ°ΡΠ·Π°ΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΡΠ΅Π·Π΅Π½ΡΠ°ΡΠΈΠΈΡΠ΅ Ρ ΠΏΡΠΈΡΡΠ΅Π½ ΡΠ°Π·Π³ΠΎΠ²ΠΎΡ.
Lightning Talks ΠΈ Π½Π΅ΠΎΡΠΈΡΠΈΠ°Π»Π½ΠΈ Π΄ΠΈΡΠΊΡΡΠΈΠΈ
ΠΠΊΠΎ ΡΠ²ΠΎΠΉΡΠΎ ΠΆΠ΅Π»Π°Π½ΠΈΠ΅ Π΅ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΡ ΠΊΡΠ°ΡΠΊΠ° ΠΏΡΠ΅Π·Π΅Π½ΡΠ°ΡΠΈΡ, ΠΌΠΎΠΆΠ΅Ρ Π΄Π° ΡΠ΅ Π·Π°ΠΏΠΈΡΠ΅Ρ Π½Π° ΠΌΠ°ΡΠΊΠ΅ΡΠ½Π°ΡΠ° Π΄ΡΡΠΊΠ° Π·Π° Π²Π΅ΡΠ΅ΡΠ½ΠΈΡ Lightning Talk ΠΈ Π΄Π° ΠΏΠΎΠ»ΡΡΠΈΡ ΠΏΠ΅Ρ ΠΌΠΈΠ½ΡΡΠΈ Π²ΡΠ΅ΠΌΠ΅ Π·Π° ΡΠ°Π·ΠΊΠ°Π· ΠΏΠΎ ΠΊΠ°ΠΊΠ²Π°ΡΠΎ ΠΈ Π΄Π° Π΅ ΡΠ΅ΠΌΠ°, ΡΠ²ΡΡΠ·Π°Π½Π° Ρ ΠΊΠΎΠ½ΡΠ΅ΡΠ΅Π½ΡΠΈΡΡΠ°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π±ΡΡΠ·ΠΎ Π²ΡΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² sanitizers Π·Π° C++ (Π·Π° Π½ΡΠΊΠΎΠΈ ΡΠ΅ ΠΎΠΊΠ°Π·Π° Π½ΠΎΠ²ΠΎΡΡ) ΠΈΠ»ΠΈ ΠΈΡΡΠΎΡΠΈΡ Π·Π° Π±ΡΠ³ Π² Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΡΠΈΠ½ΡΡΠΎΠΈΠ΄Π°, ΠΊΠΎΡΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΡΡΡΠΎ, Π½ΠΎ Π½Π΅ Π²ΠΈΠ΄ΡΠ½ΠΎ.
ΠΡΡΠ³ΠΈΡΡ ΡΠΎΡΠΌΠ°Ρ Π±Π΅ΡΠ΅ ΠΏΠ°Π½Π΅Π»Π½Π°ΡΠ° Π΄ΠΈΡΠΊΡΡΠΈΡ "Π‘ ΠΊΠΎΠΌΠΈΡΠ΅ΡΠ° Π·Π° Π΄ΡΡΠΈΡΠ΅". ΠΠ° ΡΡΠ΅Π½Π°ΡΠ° Π±ΡΡ Π° Π½ΡΠΊΠΎΠΈ ΡΠ»Π΅Π½ΠΎΠ²Π΅ Π½Π° ΠΊΠΎΠΌΠΈΡΠ΅Ρa ΠΏΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠΈΠ·Π°ΡΠΈΡ, Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠΎΡΠ° - ΠΊΠ°ΠΌΠΈΠ½Π° (ΠΎΡΠΈΡΠΈΠ°Π»Π½ΠΎ Π·Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° ΡΡΡΠ½Π° Π°ΡΠΌΠΎΡΡΠ΅ΡΠ°, Π½ΠΎ ΠΏΡΠΈΡΠΈΠ½Π°ΡΠ° "Π·Π°ΡΠΎΡΠΎ ΠΠ‘ΠΠ§ΠΠ Π Π ΠΠΠͺΠ" Π·Π²ΡΡΠΈ ΠΏΠΎ-Π·Π°Π±Π°Π²Π½ΠΎ), Π²ΡΠΏΡΠΎΡΠΈΡΠ΅ Π±ΡΡ Π° ΠΎΡΠ½ΠΎΡΠ½ΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ° ΠΈ ΠΎΠ±ΡΠΎΡΠΎ Π²ΠΈΠΆΠ΄Π°Π½Π΅ Π·Π° C++, Π±Π΅Π· Π±ΡΡΠ½ΠΈ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈ ΠΎΠ±ΡΡΠΆΠ΄Π°Π½ΠΈΡ ΠΈ Ρ ΠΎΠ»ΠΈΠ²Π°ΡΠΈ. ΠΠΊΠ°Π·Π° ΡΠ΅, ΡΠ΅ Π² ΠΊΠΎΠΌΠΈΡΠ΅ΡΠ° ΡΡΡΠΎ ΠΈΠΌΠ° ΠΆΠΈΠ²ΠΈ Ρ ΠΎΡΠ°, ΠΊΠΎΠΈΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° Π½Π΅ ΡΠ° Π½Π°ΠΏΡΠ»Π½ΠΎ ΡΠ²Π΅ΡΠ΅Π½ΠΈ Π² Π½Π΅ΡΠΎ ΠΈΠ»ΠΈ Π½Π΅ΡΠΎ Π΄Π° Π½Π΅ Π·Π½Π°ΡΡ.
ΠΠ° Π»ΡΠ±ΠΈΡΠ΅Π»ΠΈΡΠ΅ Π½Π° Π΄ΠΈΡΠΊΡΡΠΈΠΈ ΠΎΡΡΠ°Π²Π°ΡΠ΅ ΡΡΠ΅ΡΠΎΡΠΎ ΡΡΠ±ΠΈΡΠΈΠ΅ - BOF ΡΠ΅ΡΠΈΡΡΠ° "Go ΡΡΠ΅ΡΡ C++". ΠΠ·ΠΈΠΌΠ°ΠΌΠ΅ Π»ΡΠ±ΠΈΡΠ΅Π» Π½Π° Go, Π»ΡΠ±ΠΈΡΠ΅Π» Π½Π° C++, ΠΏΡΠ΅Π΄ΠΈ Π½Π°ΡΠ°Π»ΠΎΡΠΎ Π½Π° ΡΠ΅ΡΠΈΡΡΠ° ΡΠ΅ Π·Π°Π΅Π΄Π½ΠΎ ΠΏΠΎΠ΄Π³ΠΎΡΠ²ΡΡ 100500 ΡΠ»Π°ΠΉΠ΄Π° ΠΏΠΎ ΡΠ΅ΠΌΠ°ΡΠ° (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ Ρ ΠΏΠ°ΠΊΠ΅ΡΠΈΡΠ΅ Π² C++ ΠΈΠ»ΠΈ Π»ΠΈΠΏΡΠ°ΡΠ° Π½Π° Π΄ΠΆΠ΅Π½Π΅ΡΠΈΠΊΠΈ Π² Go), Π° ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° ΠΆΠΈΠ²ΠΎ Π΄ΠΈΡΠΊΡΡΠΈΡΠ°Ρ ΠΏΠΎΠΌΠ΅ΠΆΠ΄Ρ ΡΠΈ ΠΈ Ρ Π°ΡΠ΄ΠΈΡΠΎΡΠΈΡΡΠ°, Π° Π·Π°Π»Π°ΡΠ° ΡΠ΅ ΠΎΠΏΠΈΡΠ²Π° Π΄Π° ΡΠ°Π·Π±Π΅ΡΠ΅ Π΄Π²Π΅ Π³Π»Π΅Π΄Π½ΠΈ ΡΠΎΡΠΊΠΈ Π½Π°Π²Π΅Π΄Π½ΡΠΆ. ΠΠΊΠΎ Π·Π°ΠΏΠΎΡΠ½Π΅ Π±ΠΈΡΠΊΠ° Π½Π΅ ΠΏΠΎ ΡΠ΅ΠΌΠ°ΡΠ° - ΠΌΠΎΠ΄Π΅ΡΠ°ΡΠΎΡΡΡ ΡΠ΅ Π½Π°ΠΌΠ΅ΡΠ²Π° ΠΈ ΠΏΠΎΠΌΠΈΡΠΈ ΡΡΡΠ°Π½ΠΈΡΠ΅. Π’Π°ΠΊΡΠ² ΡΠΎΡΠΌΠ°Ρ Π·Π°Π΄ΡΡΠΆΠ°: Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΡΠ°ΡΠ° ΡΠ»Π΅Π΄ Π½Π°ΡΠ°Π»ΠΎΡΠΎ Π±ΡΡ Π° ΠΏΡΠ΅ΠΌΠΈΠ½Π°Π»ΠΈ ΡΠ°ΠΌΠΎ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π°ΡΠ° ΠΎΡ ΡΠ»Π°ΠΉΠ΄ΠΎΠ²Π΅ΡΠ΅. ΠΡΠ°ΡΡ ΡΡΠ΅ΡΠΈΡ ΠΌΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡΠ° Π΄Π° ΡΡΠΊΠΎΡΠΈΠΌ Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ.
Π©Π°Π½Π΄ΠΎΠ²Π΅ΡΠ΅ Π½Π° ΠΏΠ°ΡΡΠ½ΡΠΎΡΠΈΡΠ΅
Π Ρ ΠΎΠ»ΠΎΠ²Π΅ΡΠ΅ Π±ΡΡ Π° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π΅Π½ΠΈ ΠΏΠ°ΡΡΠ½ΡΠΎΡΠΈΡΠ΅ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΡΠ΅Π½ΡΠΈΡΡΠ° β Π½Π° ΡΠ°Π½Π΄ΠΎΠ²Π΅ΡΠ΅ ΡΠ°Π·ΠΊΠ°Π·Π²Π°Ρ Π° Π·Π° ΡΠ΅ΠΊΡΡΠΈΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠΈ, ΠΏΡΠ΅Π΄Π»Π°Π³Π°Ρ Π° ΡΡΠ°ΠΆΠΎΠ²Π΅ ΠΈ ΡΠ°Π±ΠΎΡΠ°, ΠΏΡΠΎΠ²Π΅ΠΆΠ΄Π°Ρ Π° Π²ΠΈΠΊΡΠΎΡΠΈΠ½ΠΈ ΠΈ ΠΌΠ°Π»ΠΊΠΈ ΡΡΡΡΠ΅Π·Π°Π½ΠΈΡ, Π° ΡΡΡΠΎ ΡΠ°ΠΊΠ° ΡΠ°Π·Π΄Π°Π²Π°Ρ Π° ΠΏΡΠΈΡΡΠ½ΠΈ Π½Π°Π³ΡΠ°Π΄ΠΈ. Π ΡΡΡΠΎΡΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½ΡΠΊΠΎΠΈ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Π΄ΠΎΡΠΈ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Ρ Π° Π΄Π° ΠΏΡΠ΅ΠΌΠΈΠ½Π°Ρ Π½Π°ΡΠ°Π»Π½ΠΈΡΠ΅ Π΅ΡΠ°ΠΏΠΈ Π½Π° ΠΈΠ½ΡΠ΅ΡΠ²ΡΡΠ°, ΠΊΠΎΠ΅ΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° Π΅ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π·Π° ΡΠ΅Π·ΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΠ° Π΄ΠΎΡΠ»ΠΈ Π½Π΅ ΡΠ°ΠΌΠΎ Π΄Π° ΡΠ»ΡΡΠ°Ρ Π»Π΅ΠΊΡΠΈΠΈ.
Π’Π΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠΈ Π½Π° Π΄ΠΎΠΊΠ»Π°Π΄ΠΈΡΠ΅
Π‘Π»ΡΡΠ°Ρ ΠΌΠ΅ Π»Π΅ΠΊΡΠΈΠΈ ΠΏΡΠ΅Π· Π΄Π²Π°ΡΠ° Π΄Π½ΠΈ. ΠΠΎΠ½ΡΠΊΠΎΠ³Π° Π±Π΅ΡΠ΅ ΡΡΡΠ΄Π½ΠΎ Π΄Π° ΠΈΠ·Π±Π΅ΡΠ΅ΠΌ Π΅Π΄Π½Π° Π»Π΅ΠΊΡΠΈΡ ΠΎΡ ΠΏΠ°ΡΠ°Π»Π΅Π»Π½ΠΎ ΠΏΡΠΎΡΠΈΡΠ°ΡΠΈΡΠ΅ β ΡΠ΅ΡΠΈΡ ΠΌΠ΅ Π΄Π° ΡΠ΅ ΡΠ°Π·Π΄Π΅Π»ΠΈΠΌ ΠΈ Π΄Π° ΠΎΠ±ΠΌΠ΅Π½ΡΠΌΠ΅ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡΠ΅ Π·Π½Π°Π½ΠΈΡ Π² ΠΏΠΎΡΠΈΠ²ΠΊΠΈΡΠ΅. Π Π΄ΠΎΡΠΈ ΡΠ°ΠΊΠ°, ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π°, ΡΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ Π΅ ΠΎΡΡΠ°Π½Π°Π»ΠΎ ΠΏΡΠΎΠΏΡΡΠ½Π°ΡΠΎ. Π’ΡΠΊ Π±ΠΈΡ ΠΌΠ΅ ΠΈΡΠΊΠ°Π»ΠΈ Π΄Π° ΡΠ°Π·ΠΊΠ°ΠΆΠ΅ΠΌ Π·Π° ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅ΡΠΎ Π½Π° Π½ΡΠΊΠΎΠΈ Π»Π΅ΠΊΡΠΈΠΈ, ΠΊΠΎΠΈΡΠΎ Π½ΠΈ ΡΠ΅ ΡΡΠΎΡΠΈ Π½Π°ΠΉ-ΠΈΠ½ΡΡΠΈΠ³ΡΠ²Π°ΡΠΈ.
ΠΠ·ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π² C++ ΠΏΡΠ΅Π· ΠΏΡΠΈΠ·ΠΌΠ°ΡΠ° Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡΠ½ΠΈΡΠ΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ, Π ΠΎΠΌΠ°Π½ Π ΡΡΡΠ΅Π²

Π‘Π»Π°ΠΉΠ΄ ΠΎΡ
ΠΠ°ΠΊΡΠΎ ΡΡΠ°Π²Π° ΡΡΠ½ΠΎ ΠΎΡ Π·Π°Π³Π»Π°Π²ΠΈΠ΅ΡΠΎ, Π ΠΎΠΌΠ°Π½ ΡΠ°Π·Π³Π»Π΅Π΄Π° ΡΠ°Π±ΠΎΡΠ°ΡΠ° Ρ ΠΈΠ·ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ° Π½Π° LLVM. ΠΡΠΈ ΡΠΎΠ²Π°, Π·Π° ΡΠ΅Π·ΠΈ, ΠΊΠΎΠΈΡΠΎ Π½Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Clang Π² ΡΠ°Π±ΠΎΡΠ°ΡΠ° ΡΠΈ, Π»Π΅ΠΊΡΠΈΡΡΠ° Π²ΡΠ΅ ΠΏΠ°ΠΊ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎ ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ Π·Π° Π½Π°ΡΠΈΠ½Π°, ΠΏΠΎ ΠΊΠΎΠΉΡΠΎ ΠΊΠΎΠ΄ΡΡ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»Π½ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠ°Π½. Π’ΠΎΠ²Π° Π΅ ΡΠ°ΠΊΠ°, Π·Π°ΡΠΎΡΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡΠΈ ΠΈ ΡΡΠΎΡΠ²Π΅ΡΠ½ΠΈΡΠ΅ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΊΠΎΠΌΡΠ½ΠΈΠΊΠΈΡΠ°Ρ ΠΏΠΎΠΌΠ΅ΠΆΠ΄Ρ ΡΠΈ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ ΡΡΠΏΠ΅ΡΠ½ΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΡΠ²ΠΏΠ°Π΄Π°Ρ.
Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎ, Π·Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΠΈΠ·ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ°Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ: Π΄Π° ΡΠ΅ ΠΈΠ·Π²ΠΈΠΊΠ° ΠΊΠΎΠ΄ Π·Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° (Π°ΠΊΠΎ ΠΈΠΌΠ° ΡΠ°ΠΊΡΠ²) ΠΈΠ»ΠΈ Π΄Π° ΡΠ΅ ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄ΡΡ ΡΠ΅ΡΡΡΡΠΈΡΠ΅ Π½Π° ΡΠ΅ΠΊΡΡΠΎΡΠΎ Π½ΠΈΠ²ΠΎ ΠΈ Π΄Π° ΡΠ΅ ΡΠ°Π·Π²ΠΈΠ΅ ΡΡΠ΅ΠΊΠ° Π½Π°Π³ΠΎΡΠ΅. ΠΡΠΈΡΠΊΠΎ ΡΠΎΠ²Π° Π²ΠΎΠ΄ΠΈ Π΄ΠΎ ΡΠ°ΠΊΡΠ°, ΡΠ΅ Π·Π° ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»Π½ΠΎ Π³Π΅Π½Π΅ΡΠΈΡΠ°ΡΠΈΡΠ΅ ΠΈΠ·ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ²ΠΈΠΊΠ²Π°Π½ΠΈΡ, ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡΡΡ Π΄ΠΎΠ±Π°Π²Ρ Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ. Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎ, Π°ΠΊΠΎ ΠΈΠ·ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΡΠΎ Π²ΡΡΡΠ½ΠΎΡΡ Π½Π΅ Π±ΡΠ΄Π΅ Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½ΠΎ, ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ°ΡΠ° Π²ΡΠ΅ ΠΏΠ°ΠΊ ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠΈ Π½Π΅Π½ΡΠΆΠ½ΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ. ΠΠ° Π΄Π° ΡΠ΅ Π½Π°ΠΌΠ°Π»ΡΡ ΡΠ°Π·Ρ ΠΎΠ΄ΠΈΡΠ΅, Π² LLVM ΠΈΠΌΠ° Π½ΡΠΊΠΎΠ»ΠΊΠΎ Ρ Π΅Π²ΡΠΈΡΡΠΈΠΊΠΈ Π·Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π΅ Π½Π° ΡΠΈΡΡΠ°ΡΠΈΠΈ, Π² ΠΊΠΎΠΈΡΠΎ ΠΊΠΎΠ΄ΡΡ Π·Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΠΈΠ·ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π½Π΅ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ Π΄ΠΎΠ±Π°Π²Ρ ΠΈΠ»ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ Π½Π°ΠΌΠ°Π»ΠΈ Π±ΡΠΎΡΡ Π½Π° βΠΈΠ·Π»ΠΈΡΠ½ΠΈΡΠ΅β ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ.
ΠΠ΅ΠΊΡΠΎΡΡΡ ΡΠ°Π·Π³Π»Π΅ΠΆΠ΄Π° ΠΎΠΊΠΎΠ»ΠΎ Π΄ΡΠ·ΠΈΠ½Π° ΠΎΡ ΡΡΡ ΠΈ ΠΏΠΎΠΊΠ°Π·Π²Π° ΠΊΠ°ΠΊ ΡΠΈΡΡΠ°ΡΠΈΡΡΠ°, Π² ΠΊΠΎΡΡΠΎ ΡΠ΅ ΠΏΠΎΠΌΠ°Π³Π°Ρ Π·Π° ΡΡΠΊΠΎΡΡΠ²Π°Π½Π΅ Π½Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ°ΡΠ°, ΡΠ°ΠΊΠ° ΠΈ ΡΠ΅Π·ΠΈ, Π² ΠΊΠΎΠΈΡΠΎ ΡΠ΅Π·ΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΈ Π½Π΅ ΡΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠΈΠΌΠΈ.
Π’Π°ΠΊΠ° Π ΠΎΠΌΠ°Π½ Π ΡΡΡΠ΅Π² ΠΏΠΎΠ΄Π²ΠΎΠ΄ΠΈ ΡΠ»ΡΡΠ°ΡΠ΅Π»ΠΈΡΠ΅ Π΄ΠΎ ΠΈΠ·Π²ΠΎΠ΄Π°, ΡΠ΅ ΠΊΠΎΠ΄ΡΡ, ΡΡΠ΄ΡΡΠΆΠ°Ρ ΡΠ°Π±ΠΎΡΠ° Ρ ΠΈΠ·ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ, Π΄Π°Π»Π΅Ρ Π½Π΅ Π²ΠΈΠ½Π°Π³ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π° Ρ Π½ΡΠ»Π΅Π²ΠΈ ΡΠ°Π·Ρ ΠΎΠ΄ΠΈ ΠΈ Π΄Π°Π²Π° ΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ ΡΡΠ²Π΅ΡΠΈ:
- ΠΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π΅ Π΄ΠΎΠ±ΡΠ΅ Π΄Π° ΡΠ΅ ΠΎΡΠΊΠ°ΠΆΠ΅ΡΠ΅ ΠΎΡ ΠΈΠ·ΠΊΠ»ΡΡΠ΅Π½ΠΈΡΡΠ° ΠΈΠ·ΡΡΠ»ΠΎ;
- ΠΠΊΠΎ ΠΈΠ·ΠΊΠ»ΡΡΠ΅Π½ΠΈΡΡΠ° Π²ΡΠ΅ ΠΏΠ°ΠΊ ΡΠ° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈ, Π΅ Ρ ΡΠ±Π°Π²ΠΎ Π½Π°Π²ΡΡΠΊΡΠ΄Π΅ Π΄Π° Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΈ noexcept (ΠΈ const), Π·Π° Π΄Π° ΠΌΠΎΠΆΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡΡΡ Π΄Π° ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠ° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉ-ΠΌΠ½ΠΎΠ³ΠΎ.
ΠΠ°ΡΠΎ ΡΡΠ»ΠΎ, Π»Π΅ΠΊΡΠΎΡΡΡ ΠΏΠΎΡΠ²ΡΡΠ΄ΠΈ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ΡΠΎ, ΡΠ΅ ΠΈΠ·ΠΊΠ»ΡΡΠ΅Π½ΠΈΡΡΠ° Π΅ Π½Π°ΠΉ-Π΄ΠΎΠ±ΡΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π² ΠΌΠΈΠ½ΠΈΠΌΡΠΌ ΠΈΠ»ΠΈ Π½Π°ΠΏΡΠ»Π½ΠΎ Π΄Π° ΡΠ΅ ΠΎΡΠΊΠ°ΠΆΠ°Ρ.
Π‘Π»Π°ΠΉΠ΄ΠΎΠ²Π΅ΡΠ΅ Π½Π° Π΄ΠΎΠΊΠ»Π°Π΄Π° ΡΠ° Π΄ΠΎΡΡΡΠΏΠ½ΠΈ Π½Π° Π»ΠΈΠ½ΠΊΠ°:
ΠΠ΅Π½Π΅ΡΠ°ΡΠΎΡΠΈ, ΠΊΠΎΡΡΡΠΈΠ½ΠΈ ΠΈ Π΄ΡΡΠ³Π° ΡΠ»Π°Π΄ΠΎΡΡ ΡΡΡ Π·Π°ΠΌΡΠ³Π»ΡΠ²Π°Π½Π΅ Π½Π° ΠΌΠΎΠ·ΡΠΊΠ°, ΠΠ΄ΠΈ Π¨Π°Π²ΠΈΡ

Π‘Π»Π°ΠΉΠ΄ ΠΎΡ
ΠΠ΄ΠΈΠ½ ΠΎΡ ΠΌΠ½ΠΎΠ³ΠΎΡΠΎ Π΄ΠΎΠΊΠ»Π°Π΄ΠΈ Π½Π° ΡΠ°Π·ΠΈ ΠΊΠΎΠ½ΡΠ΅ΡΠ΅Π½ΡΠΈΡ, ΠΏΠΎΡΠ²Π΅ΡΠ΅Π½ Π½Π° Π½ΠΎΠ²ΠΎΠ²ΡΠ²Π΅Π΄Π΅Π½ΠΈΡΡΠ° Π² C++20, Π·Π°ΠΏΠΎΠΌΠ½ΠΈ Ρ Π½Π΅ ΡΠ°ΠΌΠΎ ΠΊΠΎΠ»ΠΎΡΠΈΡΠ½Π°ΡΠ° ΠΏΡΠ΅Π·Π΅Π½ΡΠ°ΡΠΈΡ, Π½ΠΎ ΠΈ Ρ ΡΡΠ½ΠΎΡΠΎ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π° ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°ΡΠΈΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ Π² Π»ΠΎΠ³ΠΈΠΊΠ°ΡΠ° Π½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° ΠΊΠΎΠ»Π΅ΠΊΡΠΈΠΈ (for ΡΠΈΠΊΡΠ», callback-ΠΈ).
ΠΠ΄ΠΈ Π¨Π°Π²ΠΈΡ ΠΎΡΠΊΡΠΎΡΠ²Π° ΡΠ»Π΅Π΄Π½ΠΈΡΠ΅: Π½Π°ΡΡΠΎΡΡΠΈΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄ΠΈ ΠΎΠ±Ρ ΠΎΠΆΠ΄Π°Ρ ΠΊΠΎΠ»Π΅ΠΊΡΠΈΡΡΠ° ΠΈΠ·ΡΡΠ»ΠΎ ΠΈ Π½Π΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΡΡ Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ Π½ΡΠΊΠ°ΠΊΠ²ΠΎ Π²ΡΡΡΠ΅ΡΠ½ΠΎ ΠΌΠ΅ΠΆΠ΄ΠΈΠ½Π½ΠΎ ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ (ΠΈΠ»ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΡΡ ΠΏΡΠΈ callback-ΠΎΠ²Π΅, Π½ΠΎ Ρ ΠΌΠ½ΠΎΠ³ΠΎ Π½Π΅ΠΏΡΠΈΡΡΠ½ΠΈ ΡΡΡΠ°Π½ΠΈΡΠ½ΠΈ Π΅ΡΠ΅ΠΊΡΠΈ, ΠΊΠ°ΡΠΎ Ρ. Π½Π°Ρ. Callback Hell). ΠΠ·Π³Π»Π΅ΠΆΠ΄Π°, ΡΠ΅ ΠΈΠΌΠ°ΠΌΠ΅ ΠΈΡΠ΅ΡΠ°ΡΠΎΡΠΈ, Π½ΠΎ ΠΈ Ρ ΡΡΡ Π½Π΅ Π΅ Π²ΡΠΈΡΠΊΠΎ ΡΠΎΠ»ΠΊΠΎΠ²Π° Π³Π»Π°Π΄ΠΊΠΎ: Π½ΡΠΌΠ° ΠΎΠ±ΡΠΈ ΡΠΎΡΠΊΠΈ Π·Π° Π²Ρ ΠΎΠ΄ ΠΈ ΠΈΠ·Ρ ΠΎΠ΄ (begin β end ΡΡΠ΅ΡΡ rbegin β rend ΠΈ ΡΠ°ΠΊΠ° Π½Π°ΡΠ°ΡΡΠΊ), Π½Π΅ Π΅ ΡΡΠ½ΠΎ ΠΊΠΎΠ»ΠΊΠΎ ΡΠΎΡΠ½ΠΎ ΡΠ΅ ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠΈΠΌ Π΄Π° ΠΈΡΠ΅ΡΠ°ΡΠ°ΠΌΠ΅. ΠΡ C++20 ΡΠ΅Π·ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ ΡΠ΅ ΡΠ΅ΡΠ°Π²Π°Ρ!
ΠΡΡΠ²ΠΈΡΡ Π²Π°ΡΠΈΠ°Π½Ρ: ranges. ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π° ΠΎΠ±Π²ΠΈΠ²ΠΊΠ°ΡΠ° Π½Π°Π΄ ΠΈΡΠ΅ΡΠ°ΡΠΎΡΠΈΡΠ΅ ΠΏΠΎΠ»ΡΡΠ°Π²Π°ΠΌΠ΅ ΠΎΠ±Ρ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π·Π° Π½Π°ΡΠ°Π»ΠΎ ΠΈ ΠΊΡΠ°ΠΉ Π½Π° ΠΈΡΠ΅ΡΠ°ΡΠΈΡΡΠ°, Π° ΡΡΡΠΎ ΡΠ°ΠΊΠ° ΠΏΠΎΠ»ΡΡΠ°Π²Π°ΠΌΠ΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡΠΈΡ. ΠΡΠΈΡΠΊΠΎ ΡΠΎΠ²Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π»Π΅ΡΠ½ΠΎ ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ Π½Π° ΠΏΡΠ»Π½ΠΎΡΠ΅Π½Π½ΠΈ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΠΈ Π·Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° Π΄Π°Π½Π½ΠΈ. ΠΠΎ Π½Π΅ Π²ΡΠΈΡΠΊΠΎ Π΅ ΡΠΎΠ»ΠΊΠΎΠ²Π° Π³Π»Π°Π΄ΠΊΠΎ: ΡΠ°ΡΡ ΠΎΡ Π»ΠΎΠ³ΠΈΠΊΠ°ΡΠ° Π½Π° ΠΈΠ·ΡΠΈΡΠ»Π΅Π½ΠΈΡΡΠ° Π΅ Π²ΡΡΡΠ΅ Π² ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡΡΠ° Π½Π° ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΈΡ ΠΈΡΠ΅ΡΠ°ΡΠΎΡ, ΠΊΠΎΠ΅ΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΡΠ»ΠΎΠΆΠ½ΠΈ ΠΊΠΎΠ΄Π° Π·Π° Π²ΡΠ·ΠΏΡΠΈΠ΅ΠΌΠ°Π½Π΅ ΠΈ ΠΎΡΡΡΡΠ°Π½ΡΠ²Π°Π½Π΅ Π½Π° Π³ΡΠ΅ΡΠΊΠΈ.

Π‘Π»Π°ΠΉΠ΄ ΠΎΡ
Π, Π² ΡΠ°ΠΊΡΠ² ΡΠ»ΡΡΠ°ΠΉ Π² C++20 ΡΠ° Π΄ΠΎΠ±Π°Π²Π΅Π½ΠΈ ΠΊΠΎΡΡΡΠΈΠ½ΠΈ (ΡΡΠ½ΠΊΡΠΈΠΈ, ΡΠΈΠΉΡΠΎ Π½Π°ΡΠΈΠ½ Π½Π° ΡΠ°Π±ΠΎΡΠ° Π΅ ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ Π½Π° Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΠΈΡΠ΅ Π² Python): ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΠΎΡΠ»ΠΎΠΆΠ΅Π½ΠΎ, ΠΊΠ°ΡΠΎ Π²ΡΡΠ½Π΅ ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½Π°ΡΠ° ΡΡΠΎΠΉΠ½ΠΎΡΡ, Π·Π°ΠΏΠ°Π·Π²Π°ΠΉΠΊΠΈ ΠΏΡΠΈ ΡΠΎΠ²Π° ΠΌΠ΅ΠΆΠ΄ΠΈΠ½Π½ΠΎΡΠΎ ΡΡΡΡΠΎΡΠ½ΠΈΠ΅. ΠΠΎ ΡΠΎΠ·ΠΈ Π½Π°ΡΠΈΠ½ ΠΏΠΎΡΡΠΈΠ³Π°ΠΌΠ΅ Π½Π΅ ΡΠ°ΠΌΠΎ ΡΠ°Π±ΠΎΡΠ° Ρ Π΄Π°Π½Π½ΠΈ ΠΏΠΎ ΠΌΡΡΠΊΠ°, Π½ΠΎ ΠΈ ΠΈΠ½ΠΊΠ°ΠΏΡΡΠ»ΠΈΡΠ°ΠΌΠ΅ ΡΡΠ»Π°ΡΠ° Π»ΠΎΠ³ΠΈΠΊΠ° Π²ΡΡΡΠ΅ Π² ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½Π° ΠΊΠΎΡΡΡΠΈΠ½Π°.
ΠΠΎ ΠΈΠΌΠ° ΠΈ ΠΌΠ°Π»ΠΊΠΎ Π»ΠΎΡΠ° ΡΡΡΠ°Π½Π°: Π² ΠΌΠΎΠΌΠ΅Π½ΡΠ° ΡΠ΅ ΡΠ΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Ρ ΡΠ°ΠΌΠΎ ΡΠ°ΡΡΠΈΡΠ½ΠΎ ΠΎΡ Π½Π°Π»ΠΈΡΠ½ΠΈΡΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡΠΈ, Π° ΡΡΡΠΎ ΡΠ°ΠΊΠ° ΡΠ° ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ Π½Π΅ ΡΠΎΠ»ΠΊΠΎΠ²Π° ΠΏΡΠ΅ΡΠΈΠ·Π½ΠΎ, ΠΊΠΎΠ»ΠΊΠΎΡΠΎ Π±ΠΈΡ ΠΌΠ΅ ΠΈΡΠΊΠ°Π»ΠΈ: Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π° ΡΠΎΠ·ΠΈ Π΅ΡΠ°ΠΏ Π½Π΅ Π΅ ΠΏΡΠ΅ΠΏΠΎΡΡΡΠΈΡΠ΅Π»Π½ΠΎ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΡΠ΅ΡΠ΅ΡΠ΅Π½ΡΠΈΠΈ ΠΈ Π²ΡΠ΅ΠΌΠ΅Π²ΠΈ ΠΎΠ±Π΅ΠΊΡΠΈ Π² ΠΊΠΎΡΡΡΠΈΠ½ΠΈ. ΠΡΠ²Π΅Π½ ΡΠΎΠ²Π°, ΠΈΠΌΠ° Π½ΡΠΊΠΎΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ Π·Π° ΡΠΎΠ²Π° ΠΊΠ°ΠΊΠ²ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ Π² ΠΊΠΎΡΡΡΠΈΠ½ΠΈ, ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΠΎΡΠΈ/Π΄Π΅ΡΡΡΡΠΊΡΠΎΡΠΈ, ΠΊΠ°ΠΊΡΠΎ ΠΈ main Π½Π΅ Π²Π»ΠΈΠ·Π°Ρ Π² ΡΠΎΠ·ΠΈ ΡΠΏΠΈΡΡΠΊ.
Π’Π°ΠΊΠ° ΡΠ΅, ΠΊΠΎΡΡΡΠΈΠ½ΠΈΡΠ΅ ΡΠ΅ΡΠ°Π²Π°Ρ Π·Π½Π°ΡΠΈΡΠ΅Π»Π½Π° ΡΠ°ΡΡ ΠΎΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈΡΠ΅ ΡΡΡ ΠΏΡΠΎΡΡΠΎΡΠ°ΡΠ° Π½Π° Π»ΠΎΠ³ΠΈΠΊΠ°ΡΠ° Π·Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° Π΄Π°Π½Π½ΠΈ, Π½ΠΎ ΡΠ΅ΠΊΡΡΠΈΡΠ΅ ΠΈΠΌ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΈΠ·ΠΈΡΠΊΠ²Π°Ρ Π΄ΠΎΡΠ°Π±ΠΎΡΠΊΠ°.
ΠΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΈ:
- Π‘Π»Π°ΠΉΠ΄ΠΎΠ²Π΅ ΠΎΡ C++ Π ΡΡΠΈΡ β
C++ ΡΡΠΈΠΊΠΎΠ²Π΅ ΠΎΡ Π―Π½Π΄Π΅ΠΊΡ.Π’Π°ΠΊΡΠΈ, ΠΠ½ΡΠΎΠ½ ΠΠΎΠ»ΡΡ ΠΈΠ½
Π ΡΠ²ΠΎΡΡΠ° ΠΏΡΠΎΡΠ΅ΡΠΈΠΎΠ½Π°Π»Π½Π° Π΄Π΅ΠΉΠ½ΠΎΡΡ ΠΏΠΎΠ½ΡΠΊΠΎΠ³Π° ΡΠ΅ Π½Π°Π»Π°Π³Π° Π΄Π° ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°ΠΌΠ΅ ΡΠΈΡΡΠΎ ΠΏΠΎΠΌΠΎΡΠ½ΠΈ Π½Π΅ΡΠ°: ΠΎΠ±Π²ΠΈΠ²ΠΊΠ° ΠΌΠ΅ΠΆΠ΄Ρ Π²ΡΡΡΠ΅ΡΠ½ΠΈΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΈ API Π½Π° Π½ΡΠΊΠΎΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°, Π»ΠΎΠ³Π²Π°Π½Π΅ ΠΈΠ»ΠΈ ΠΏΠ°ΡΡΠΈΠ½Π³. ΠΡΠΈ ΡΠΎΠ²Π° ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ Π½ΡΠΌΠ° Π½ΡΠΆΠ΄Π° ΠΎΡ Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½Π° ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ. ΠΠΎ ΠΊΠ°ΠΊΠ²ΠΎ, Π°ΠΊΠΎ ΡΠ΅Π·ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π² Π½ΡΠΊΠΎΠΈ ΠΎΡ Π½Π°ΠΉ-ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΈΡΠ΅ ΡΡΠ»ΡΠ³ΠΈ Π² Π ΡΠ½Π΅ΡΠ°? Π ΡΠ°ΠΊΠ°Π²Π° ΡΠΈΡΡΠ°ΡΠΈΡ ΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π°ΠΌΠ΅ ΡΠ΅ΡΠ°Π±Π°ΠΉΡΠΈ Π½Π° ΡΠ°Ρ ΡΠ°ΠΌΠΎ ΠΎΡ Π»ΠΎΠ³ΠΎΠ²Π΅ΡΠ΅! Π’ΠΎΠ³Π°Π²Π° Π²ΡΡΠΊΠ° ΠΌΠΈΠ»ΠΈΡΠ΅ΠΊΡΠ½Π΄Π° Π΅ Π½Π° ΡΠΌΠ΅ΡΠΊΠ° ΠΈ Π·Π°ΡΠΎΠ²Π° ΡΡΡΠ±Π²Π° Π΄Π° ΠΏΡΠΈΠ±ΡΠ³Π²Π°ΠΌΠ΅ Π΄ΠΎ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΡΡΠΈΠΊΠΎΠ²Π΅ β ΡΠΎΡΠ½ΠΎ Π·Π° ΡΡΡ ΡΠ°Π·ΠΊΠ°Π·Π²Π°ΡΠ΅ ΠΠ½ΡΠΎΠ½ ΠΠΎΠ»ΡΡ ΠΈΠ½.
ΠΠΎΠΆΠ΅ Π±ΠΈ Π½Π°ΠΉ-ΠΈΠ½ΡΡΠΈΠ³ΡΠ²Π°ΡΠΈΡΡ ΠΏΡΠΈΠΌΠ΅Ρ Π±Π΅ΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡΡΠ° Π½Π° ΡΠ°Π±Π»ΠΎΠ½Π° pointer-to-implementation (pimpl).Β
#include <third_party/json.hpp> //PROBLEMS!Β
struct Value {Β
Value() = default;Β
Value(Value&& other) = default;Β
Value& operator=(Value&& other) = default;Β
~Value() = default;Β
std::size_t Size() const { return data_.size(); }Β
private:Β
third_party::Json data_;Β
};Π ΡΠΎΠ·ΠΈ ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΡΡΠ²ΠΎ ΠΈΡΠΊΠ°ΠΌΠ΅ Π΄Π° ΡΠ΅ ΠΎΡΡΡΠ²Π΅ΠΌ ΠΎΡ Ρ Π΅Π΄ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ΡΠ΅ Π½Π° Π²ΡΠ½ΡΠ½ΠΈΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ β ΡΠ°ΠΊΠ° ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Π½Π΅ΡΠΎ ΡΠ΅ Π΅ ΠΏΠΎ-Π±ΡΡΠ·ΠΎ, ΠΈ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΡΠ΅ Π·Π°ΡΠΈΡΠΈΠΌ ΠΎΡ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΈ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠΈ Π½Π° ΠΈΠΌΠ΅Π½Π° ΠΈ Π΄ΡΡΠ³ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ Π³ΡΠ΅ΡΠΊΠΈ.Β
ΠΠΎΠ±ΡΠ΅, ΠΏΡΠ΅ΠΌΠ΅ΡΡΠΈΡ ΠΌΠ΅ #include Π² .cpp ΡΠ°ΠΉΠ»Π°: Π½ΡΠΆΠ½Π° Π΅ forward-declaration Π½Π° ΠΎΠ±Π²ΠΈΠ²Π°Π½ΠΈΡ API, Π° ΡΡΡΠΎ ΠΈ std::unique_ptr. Π‘Π΅Π³Π° ΠΈΠΌΠ°ΠΌΠ΅ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ½ΠΈ Π°Π»ΠΎΠΊΠ°ΡΠΈΠΈ ΠΈ Π΄ΡΡΠ³ΠΈ Π½Π΅ΠΏΡΠΈΡΡΠ½ΠΈ Π½Π΅ΡΠ°, ΠΊΠ°ΡΠΎ ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈ ΠΏΠΎ ΠΊΡΠΏΠ° Π΄Π°Π½Π½ΠΈ ΠΈ Π½Π°ΠΌΠ°Π»Π΅Π½ΠΈ Π³Π°ΡΠ°Π½ΡΠΈΠΈ. Π‘ Π²ΡΠΈΡΠΊΠΎ ΡΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΠΎΠΌΠΎΠ³Π½Π΅ std::aligned_storage.Β
struct Value {Β
// ...Β
private:Β
using JsonNative = third_party::Json;Β
const JsonNative* Ptr() const noexcept;Β
JsonNative* Ptr() noexcept;Β
constexpr std::size_t kImplSize = 32;Β
constexpr std::size_t kImplAlign = 8;Β
std::aligned_storage_t data_;Β
};ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π°ΡΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ½Π° ΡΠΎΡΠΊΠ°: Π½ΡΠΆΠ½ΠΎ Π΅ Π·Π° Π²ΡΡΠΊΠ° ΠΎΠ±Π²ΠΈΠ²ΠΊΠ° Π΄Π° ΠΎΠΏΠΈΡΠ΅ΠΌ ΡΠ°Π·ΠΌΠ΅Ρ ΠΈ ΠΈΠ·ΡΠ°Π²Π½ΡΠ²Π°Π½Π΅ β ΡΠ΅ Π½Π°ΠΏΡΠ°Π²ΠΈΠΌ Π½Π°ΡΠΈΡ pimpl ΡΠ°Π±Π»ΠΎΠ½Π΅Π½ Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ , ΡΠ΅ Π³ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Ρ Π½ΡΠΊΠ°ΠΊΠ²ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»Π½ΠΈ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ ΠΈ ΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π² Π΄Π΅ΡΡΡΡΠΊΡΠΎΡΠ° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ°, ΡΠ΅ Π²ΡΠΈΡΠΊΠΎ ΡΠΌΠ΅ ΠΏΠΎΠ·Π½Π°Π»ΠΈ:Β
~FastPimpl() noexcept {Β
validate();Β
Ptr()->~T();Β
}
template
static void validate() noexcept {Β
static_assert(
Size == ActualSize,Β
"Size and sizeof(T) mismatch"
);Β
static_assert(
Alignment == ActualAlignment,Β
"Alignment and alignof(T) mismatch"
);Β
}Π’ΡΠΉ ΠΊΠ°ΡΠΎ ΠΏΡΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° Π΄Π΅ΡΡΡΡΠΊΡΠΎΡΠ° T Π²Π΅ΡΠ΅ Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½, ΡΠΎΠ·ΠΈ ΠΊΠΎΠ΄ ΡΠ΅ Π±ΡΠ΄Π΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ΅Π½ ΠΊΠΎΡΠ΅ΠΊΡΠ½ΠΎ ΠΈ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡ ΡΠ΅ ΠΈΠ·Π²Π΅Π΄Π΅ Π½ΡΠΆΠ½ΠΈΡΠ΅ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ Π·Π° ΡΠ°Π·ΠΌΠ΅Ρ ΠΈ ΠΏΠΎΠ΄ΡΠ°Π²Π½ΡΠ²Π°Π½Π΅, ΠΊΠΎΠΈΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ Π²ΠΏΠΈΡΠ°Ρ. ΠΠΎ ΡΠΎΠ·ΠΈ Π½Π°ΡΠΈΠ½, ΡΠ΅Π½Π°ΡΠ° Π½Π° Π΅Π΄Π½ΠΎ Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΎ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡΡΠ° Π½ΠΈ ΠΈΠ·Π±Π°Π²Ρ ΠΎΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ½ΠΎ ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΎΠ±Π²ΠΈΠ²Π°ΡΠΈΡΠ΅ ΠΊΠ»Π°ΡΠΎΠ²Π΅, ΡΠΊΡΠΈΠ²Π° API Π² .cpp ΡΠ°ΠΉΠ» Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ, ΠΈ ΠΏΠΎΠ»ΡΡΠ°Π²Π°ΠΌΠ΅ ΡΡΡΡΠΊΡΡΡΠ°, ΠΏΠΎ-ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠ° Π·Π° ΠΊΠ΅ΡΠΈΡΠ°Π½Π΅ ΠΎΡ ΠΏΡΠΎΡΠ΅ΡΠΎΡΠ°.
ΠΠΎΠ³Π²Π°Π½Π΅ΡΠΎ ΠΈ ΠΏΠ°ΡΡΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π΅ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π°Ρ ΡΠΎΠ»ΠΊΠΎΠ²Π° Π²ΠΏΠ΅ΡΠ°ΡΠ»ΡΠ²Π°ΡΠΈ, Π·Π°ΡΠΎΠ²Π° Π² ΡΠΎΠ·ΠΈ ΠΏΡΠ΅Π³Π»Π΅Π΄ Π½ΡΠΌΠ° Π΄Π° Π±ΡΠ΄Π°Ρ ΡΠΏΠΎΠΌΠ΅Π½Π°Π²Π°Π½ΠΈ.
Π‘Π»Π°ΠΉΠ΄ΠΎΠ²Π΅ΡΠ΅ Π½Π° Π΄ΠΎΠΊΠ»Π°Π΄Π° ΡΠ° Π΄ΠΎΡΡΡΠΏΠ½ΠΈ Π½Π° Π»ΠΈΠ½ΠΊΠ°:
Π‘ΡΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΈ ΡΠ΅Ρ Π½ΠΈΠΊΠΈ Π·Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Π½Π΅ Π½Π° ΠΊΠΎΠ΄Π° DRY, BjΓΆrn Fahller
Π ΡΠ°Π·ΠΈ Π»Π΅ΠΊΡΠΈΡ BjΓΆrn Fahller ΠΏΠΎΠΊΠ°Π·Π²Π° Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π½Π°ΡΠΈΠ½Π° Π·Π° ΡΠΏΡΠ°Π²ΡΠ½Π΅ Ρ ΡΠ°ΠΊΡΠ² ΡΡΠΈΠ»ΠΈΡΡΠΈΡΠ΅Π½ Π½Π΅Π΄ΠΎΡΡΠ°ΡΡΠΊ, ΠΊΠ°ΡΠΎ ΠΏΠΎΠ²ΡΠ°ΡΡΡΠΈ ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π½Π° ΡΡΠ»ΠΎΠ²ΠΈΡ:
assert(a == IDLE || a == CONNECTED || a == DISCONNECTED);ΠΠ²ΡΡΠΈ ΠΏΠΎΠ·Π½Π°ΡΠΎ? ΠΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΌΠΎΡΠ½ΠΈ ΡΠ΅Ρ Π½ΠΈΠΊΠΈ ΠΎΡ Π‘++, ΠΏΠΎΡΠ²ΠΈΠ»ΠΈ ΡΠ΅ Π² Π½ΠΎΠ²ΠΈΡΠ΅ ΡΡΠ°Π½Π΄Π°ΡΡΠΈ, ΠΌΠΎΠΆΠ΅ΠΌ Π΅Π»Π΅Π³Π°Π½ΡΠ½ΠΎ Π΄Π° ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°ΠΌΠ΅ ΡΡΡΠ°ΡΠ° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡ Π±Π΅Π· Π½ΠΈΠΊΠ°ΠΊΠ²ΠΈ Π·Π°Π³ΡΠ±ΠΈ Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ°. Π‘ΡΠ°Π²Π½Π΅ΡΠ΅:Β Β Β
assert(a == any_of(IDLE, CONNECTED, DISCONNECTED));ΠΠ° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° Π½Π΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ Π±ΡΠΎΠΉ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΡΠ΅ ΠΏΡΠ΅Π΄Π»Π°Π³Π° Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π²Π°ΡΠΈΠ°Π΄ΠΈΡΠ½ΠΈ ΡΠ°Π±Π»ΠΎΠ½ΠΈ ΠΈ fold ΠΈΠ·ΡΠ°Π·ΠΈ. ΠΠ° ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΡΠ΅ ΠΈΡΠΊΠ°ΠΌΠ΅ Π΄Π° ΠΏΡΠΎΠ²Π΅ΡΠΈΠΌ ΡΠ°Π²Π΅Π½ΡΡΠ²ΠΎΡΠΎ Π½Π° Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ Ρ Π΅Π»Π΅ΠΌΠ΅Π½Ρ ΠΎΡ enumβa state_type. ΠΡΡΠ²ΠΎΡΠΎ, ΠΊΠΎΠ΅ΡΠΎ ΠΈΠ΄Π²Π° Π½Π°ΡΠΌ, Π΅ Π΄Π° Π½Π°ΠΏΠΈΡΠ΅ΠΌ ΠΏΠΎΠΌΠΎΡΠ½Π° ΡΡΠ½ΠΊΡΠΈΡ is_any_of:
enum state_type { IDLE, CONNECTED, DISCONNECTED };
template
bool is_any_of(state_type s, const Ts& ... ts) {Β
return ((s == ts) || ...);Β
}
Π’Π°ΠΊΡΠ² ΠΌΠ΅ΠΆΠ΄ΠΈΠ½Π΅Π½ ΡΠ΅Π·ΡΠ»ΡΠ°Ρ ΠΏΡΠ΅Π΄ΠΈΠ·Π²ΠΈΠΊΠ²Π° ΡΠ°Π·ΠΎΡΠ°ΡΠΎΠ²Π°Π½ΠΈΠ΅. ΠΡΠ΅ ΠΎΡΠ΅ ΠΊΠΎΠ΄ΡΡ Π½Π΅ ΡΡΠ°Π²Π° ΠΏΠΎ-ΡΠ΅ΡΠΈΠΌ:
assert(is_any_of(state, IDLE, DISCONNECTING, DISCONNECTED));Β ΠΠ°Π»ΠΊΠΎ ΠΏΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Π½Π° ΡΠΈΡΡΠ°ΡΠΈΡΡΠ° ΠΌΠΎΠ³Π°Ρ Π΄Π° ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΡΠ΅ Π½Π° ΡΠ°Π±Π»ΠΎΠ½Π° Π±Π΅Π· ΡΠΈΠΏ. Π‘ ΡΡΡ Π½Π° ΠΏΠΎΠΌΠΎΡ ΡΠ΅ ΠΏΡΠ΅ΠΌΠ΅ΡΡΠΈΠΌ ΠΈΠ·Π±ΡΠΎΠ΅Π½ΠΈΡΠ΅ Π΅Π»Π΅ΠΌΠ΅Π½ΡΠΈ ΠΎΡ enumβa Π² ΡΠΏΠΈΡΡΠΊΠ° Π½Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΡΠ΅ Π½Π° ΡΠ°Π±Π»ΠΎΠ½Π°:Β
template
bool is_any_of(state_type t) {Β
return ((t == states) | ...);Β
}
assert(is_any_of(state));Β Π‘ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° auto Π² Π½Π΅ΡΠΈΠΏΠΎΠ²ΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π½Π° ΡΠ°Π±Π»ΠΎΠ½Π° (C++17), ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡ ΠΏΡΠΎΡΡΠΎ ΡΠ΅ ΠΎΠ±ΠΎΠ±ΡΠ°Π²Π° Π·Π° ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Π½Π΅ ΡΠ°ΠΌΠΎ Ρ Π΅Π»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ΅ ΠΎΡ state_type, Π½ΠΎ ΠΈ Ρ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Π½ΠΈ ΡΠΈΠΏΠΎΠ²Π΅, ΠΊΠΎΠΈΡΠΎ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΠΊΠ°ΡΠΎ Π½Π΅ ΡΠΈΠΏΠΎΠ²ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ Π½Π° ΡΠ°Π±Π»ΠΎΠ½Π°:
template
bool is_any_of(const T& t) {
return ((t == alternatives) | ...);
}Π§ΡΠ΅Π· ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΈ ΠΏΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ΠΈΡ ΡΠ΅ ΠΏΠΎΡΡΠΈΠ³Π° ΠΆΠ΅Π»Π°Π½ΠΈΡΡ ΠΏΠ»Π°Π²Π΅Π½ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ Π·Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ:
template
struct any_of : private std::tuple {Β
// Π½Π΅ΠΊΠ° Π½Π°ΡΠ»Π΅Π΄ΠΈΠΌ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠΈΡΠ΅ ΠΎΡ tupleΒ
using std::tuple::tuple;
template
bool operator ==(const T& t) const {
return std::apply(
[&t](const auto& ... ts) {
return ((ts == t) || ...);
},
static_cast<const std::tuple&>(*this));
}
};
template
any_of(Ts ...) -> any_of;
Β
assert(any_of(IDLE, DISCONNECTING, DISCONNECTED) == state);
Π ΡΠΎΠ·ΠΈ ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π°ΡΠΎΡΠ²Π°ΡΠΎΡΠΎ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΡΠ»ΡΠΆΠΈ Π·Π° ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ Π½Π° ΠΆΠ΅Π»Π°Π½ΠΈΡ ΡΠ°Π±Π»ΠΎΠ½Π΅Π½ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π½Π° ΡΡΡΡΠΊΡΡΡΠ°ΡΠ° Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡΠ°, ΠΊΠΎΠΉΡΠΎ Π·Π½Π°Π΅ ΡΠΈΠΏΠΎΠ²Π΅ΡΠ΅ Π½Π° Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΈΡΠ΅ Π½Π° ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ°.Β
Π‘Π»Π΅Π΄Π²Π°ΡΠ°ΡΠ° ΡΠ°ΡΡ Π΅ ΠΎΡΠ΅ ΠΏΠΎ-ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½Π°. ΠΠΉΠΎΡΠ½ ΡΡΠΈ ΠΊΠ°ΠΊ Π΄Π° ΠΎΠ±ΠΎΠ±ΡΠΈΠΌ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ΄ Π·Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΈ Π·Π° ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅, ΠΎΡΠ²Π΅Π½ ==, Π° ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° ΠΈ Π·Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»Π½ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ. Π ΠΏΡΠΎΡΠ΅ΡΠ° Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ° ΡΠ΅ ΠΎΠ±ΡΡΠ½ΡΠ²Π°Ρ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΊΠ°ΡΠΎ no_unique_address attribute (C++20) ΠΈ ΡΠ°Π±Π»ΠΎΠ½Π½ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ Π² Π»ΡΠΌΠ±Π΄Π°-ΡΡΠ½ΠΊΡΠΈΠΈ (C++20). (ΠΠ°, ΡΠ΅Π³Π° ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΡΡ Π½Π° Π»ΡΠΌΠ±Π΄ΠΈΡΠ΅ Π΅ ΠΎΡΠ΅ ΠΏΠΎ-Π»Π΅ΡΠ΅Π½ Π·Π° Π·Π°ΠΏΠΎΠΌΠ½ΡΠ½Π΅ β ΡΠΎΠ²Π° ΡΠ° ΡΠ΅ΡΠΈΡΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΈ Π΄Π²ΠΎΠΉΠΊΠΈ ΡΠΊΠΎΠ±ΠΈ ΠΎΡ Π²ΡΠΈΡΠΊΠΈ ΡΠΎΡΡΠΎΠ²Π΅.) Π€ΠΈΠ½Π°Π»Π½ΠΎΡΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Ρ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΡΡΠ½ΠΊΡΠΈΠΈ ΠΊΠ°ΡΠΎ Π΄Π΅ΡΠ°ΠΉΠ»ΠΈ Π½Π° ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° Π½Π°ΠΈΡΡΠΈΠ½Π° ΠΌΠ΅ ΡΠ°Π΄Π²Π°, Π΄Π° Π½Π΅ Π³ΠΎΠ²ΠΎΡΠΈΠΌ Π·Π° ΠΈΠ·ΡΠ°Π·ΡΠ²Π°Π½Π΅ Π½Π° tuple Π² Π½Π°ΠΉ-Π΄ΠΎΠ±ΡΠΈΡΠ΅ ΡΡΠ°Π΄ΠΈΡΠΈΠΈ Π½Π° Π»ΡΠΌΠ±Π΄Π°-ΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ΡΠΎ.
Π ΠΊΡΠ°Ρ Π½Π΅ Π·Π°Π±ΡΠ°Π²ΡΠΉΡΠ΅ Π΄Π° ΠΏΡΠΈΠ΄Π°Π΄Π΅ΠΌ Π·Π°Π²ΡΡΡΠ΅Π½ Π²ΠΈΠ΄:
- ΠΠ΅ΠΊΠ° ΡΠΈ Π½Π°ΠΏΠΎΠΌΠ½ΠΈΠΌ, ΡΠ΅ Π»ΡΠΌΠ±Π΄ΠΈΡΠ΅ β constexpr Π±Π΅Π·ΠΏΠ»Π°ΡΠ½ΠΎ;Β
- ΠΠΎΠ±Π°Π²ΡΠΌΠ΅ perfect forwarding ΠΈ ΠΏΠΎΠ³Π»Π΅ΠΆΠ΄Π°ΠΌΠ΅ Π½Π΅Π³ΠΎΠ²ΠΈΡ Π½Π΅ΠΏΠΎΠ΄ΡΠ΅Π΄Π΅Π½ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ, ΡΠ²ΡΡΠ·Π°Π½ Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΡΠ½ΠΈΡ ΠΏΠ°ΠΊΠ΅Ρ Π² Π·Π°ΠΌΠΈΠΊΠ²Π°Π½ΠΈΡ Π½Π° Π»ΡΠΌΠ±Π΄ΠΈ;
- ΠΠ°Π²Π°ΠΌΠ΅ Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡΠ° ΠΏΠΎΠ²Π΅ΡΠ΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π·Π° ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ Ρ ΡΡΠ»ΠΎΠ²Π΅Π½ noexcept;Β
- ΠΠΎΠ³ΡΠΈΠΆΠ΅ΡΠ΅ ΡΠ΅ Π·Π° ΠΏΠΎ-ΡΠ°Π·Π±ΠΈΡΠ°Π΅ΠΌ ΠΈΠ·Ρ ΠΎΠ΄ Π½Π° Π³ΡΠ΅ΡΠΊΠΈ Π² ΡΠ°Π±Π»ΠΎΠ½ΠΈ ΡΡΠ΅Π· ΡΠ²Π½ΠΈ Π²ΡΡΠ½Π°ΡΠΈ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ ΠΎΡ Π»ΡΠΌΠ±Π΄ΠΈ. Π’ΠΎΠ²Π° ΡΠ΅ Π½Π°ΠΊΠ°ΡΠ° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡΠ° Π΄Π° ΠΈΠ·Π²ΡΡΡΠ²Π° ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΏΡΠ΅Π΄ΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»Π½ΠΎΡΠΎ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° ΡΠ°Π±Π»ΠΎΠ½Π½Π°ΡΠ° ΡΡΠ½ΠΊΡΠΈΡ β Π½Π° Π΅ΡΠ°ΠΏΠ° Π½Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΡΠΈΠΏΠΎΠ²Π΅ΡΠ΅.Β
ΠΠ° ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠΈ ΠΌΠΎΠ»Ρ Π΄Π° ΡΠ΅ ΠΎΠ±ΡΡΠ½Π΅ΡΠ΅ ΠΊΡΠΌ ΡΡΠ΅Π±Π½ΠΈΡΠ΅ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΈ:Β
- Π‘Π»Π°ΠΉΠ΄ΠΎΠ²Π΅ ΠΎΡ Π΄ΠΎΠΊΠ»Π°Π΄Π°:
ΠΠ°ΡΠΈΡΠ΅ Π²ΠΏΠ΅ΡΠ°ΡΠ»Π΅Π½ΠΈΡ
ΠΠ°ΡΠ΅ΡΠΎ ΠΏΡΡΠ²ΠΎ ΡΡΠ°ΡΡΠΈΠ΅ Π² C++ Russia ΠΎΡΡΠ°Π½Π° Π² ΠΏΠ°ΠΌΠ΅ΡΡΠ° Ρ Π½Π°ΡΠΈΡΠ΅Π½ΠΎΡΡΡΠ° ΡΠΈ. Π‘ΡΠ·Π΄Π°Π΄Π΅ ΡΠ΅ Π²ΠΏΠ΅ΡΠ°ΡΠ»Π΅Π½ΠΈΠ΅ Π·Π° C++ Russia ΠΊΠ°ΡΠΎ Π·Π° Π΄ΡΡΠ΅Π²Π½ΠΎ ΡΡΠ±ΠΈΡΠΈΠ΅, ΠΊΡΠ΄Π΅ΡΠΎ Π³ΡΠ°Π½ΠΈΡΠ°ΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ ΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅ΡΠΎ ΠΈ ΠΆΠΈΠ²ΠΎΡΠΎ ΠΎΠ±ΡΡΠ²Π°Π½Π΅ Π΅ ΠΏΠΎΡΡΠΈ Π½Π΅Π·Π°Π±Π΅Π»Π΅ΠΆΠΈΠΌΠ°. ΠΡΠΈΡΠΊΠΎ, ΠΎΡ Π½Π°ΡΡΡΠΎΠ΅Π½ΠΈΠ΅ΡΠΎ Π½Π° Π΄ΠΎΠΊΠ»Π°Π΄ΡΠΈΡΠΈΡΠ΅ Π΄ΠΎ ΠΊΠΎΠ½ΠΊΡΡΡΠΈΡΠ΅ Π½Π° ΠΏΠ°ΡΡΠ½ΡΠΎΡΠΈΡΠ΅ Π½Π° ΡΡΠ±ΠΈΡΠΈΠ΅ΡΠΎ, ΠΏΡΠΎΠ²ΠΎΠΊΠΈΡΠ° Π±ΡΡΠ½ΠΈ ΠΎΠ±ΡΡΠΆΠ΄Π°Π½ΠΈΡ. Π‘ΡΠ΄ΡΡΠΆΠ°ΡΠ΅Π»Π½Π°ΡΠ° ΡΠ°ΡΡ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΡΠ΅Π½ΡΠΈΡΡΠ°, Π²ΠΊΠ»ΡΡΠ²Π°ΡΠ° Π΄ΠΎΠΊΠ»Π°Π΄ΠΈ, ΠΎΠ±Ρ Π²Π°ΡΠ° ΡΡΠ°Π²Π½ΠΈΡΠ΅Π»Π½ΠΎ ΡΠΈΡΠΎΠΊ ΡΠΏΠ΅ΠΊΡΡΡ ΠΎΡ ΡΠ΅ΠΌΠΈ, Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ ΠΈΠ½ΠΎΠ²Π°ΡΠΈΠΈ Π² C++, ΠΏΡΠΈΠΌΠ΅ΡΠΈ ΠΎΡ ΠΏΡΠ°ΠΊΡΠΈΠΊΠ°ΡΠ° Π½Π° Π³ΠΎΠ»Π΅ΠΌΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈ ΠΈ ΠΈΠ΄Π΅ΠΎΠ»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ½ΠΈ ΡΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ. ΠΠΎ Π±ΠΈ Π±ΠΈΠ»ΠΎ Π½Π΅ΡΠΏΡΠ°Π²Π΅Π΄Π»ΠΈΠ²ΠΎ Π΄Π° Π½Π΅ ΠΎΡΡΠΈΡΠ°ΠΌΠ΅ ΠΈ ΡΠΎΡΠΈΠ°Π»Π½ΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Π½Π° ΡΡΠ±ΠΈΡΠΈΠ΅ΡΠΎ, ΠΊΠΎΠΉΡΠΎ ΠΏΠΎΠΌΠ°Π³Π° Π·Π° ΠΏΡΠ΅ΠΎΠ΄ΠΎΠ»ΡΠ²Π°Π½Π΅ Π½Π° Π΅Π·ΠΈΠΊΠΎΠ²ΠΈΡΠ΅ Π±Π°ΡΠΈΠ΅ΡΠΈ Π² ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡΡΠ° Π½Π΅ ΡΠ°ΠΌΠΎ Ρ C++.
ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΠΈΠΌ Π½Π° ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΎΡΠΈΡΠ΅ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΡΠ΅Π½ΡΠΈΡΡΠ° Π·Π° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠ° Π΄Π° ΡΡΠ°ΡΡΠ²Π°ΠΌΠ΅ Π² ΡΠ°ΠΊΠΎΠ²Π° ΡΡΠ±ΠΈΡΠΈΠ΅!
ΠΠΎΡΡΡΡ Π½Π° ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΎΡΠΈΡΠ΅ Π·Π° ΠΌΠΈΠ½Π°Π»ΠΎΡΠΎ, Π½Π°ΡΡΠΎΡΡΠ΅ΡΠΎ ΠΈ Π±ΡΠ΄Π΅ΡΠ΅ΡΠΎ Π½Π° C++ Russia ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π²ΠΈΠ΄ΠΈΡΠ΅ .
ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΠΈΠΌ Π·Π° ΠΏΡΠΎΡΠΈΡΠ°Π½Π΅ΡΠΎ ΠΈ ΡΠ΅ Π½Π°Π΄ΡΠ²Π°ΠΌΠ΅, ΡΠ΅ Π½Π°ΡΠΈΡΡ ΠΏΡΠ΅ΡΠ°Π·ΠΊΠ°Π· Π½Π° ΡΡΠ±ΠΈΡΠΈΡΡΠ° Π±Π΅ΡΠ΅ ΠΏΠΎΠ»Π΅Π·Π΅Π½!
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: habr.com
