C++ Русия: ΠΊΠ°ΠΊ сС случи

Ако Π² Π½Π°Ρ‡Π°Π»ΠΎΡ‚ΠΎ Π½Π° пиСсата ΠΊΠ°ΠΆΠ΅Ρ‚Π΅, Ρ‡Π΅ Π½Π° стСната виси C++ ΠΊΠΎΠ΄, Ρ‚ΠΎ към края Ρ‚ΠΎΠΉ Π½Π΅ΠΏΡ€Π΅ΠΌΠ΅Π½Π½ΠΎ Ρ‰Π΅ Π²ΠΈ прострСля Π² ΠΊΡ€Π°ΠΊΠ°.

БярнС Бтрауструп

ΠžΡ‚ 31 ΠΎΠΊΡ‚ΠΎΠΌΠ²Ρ€ΠΈ Π΄ΠΎ 1 Π½ΠΎΠ΅ΠΌΠ²Ρ€ΠΈ Π² Π‘Π°Π½ΠΊΡ‚ ΠŸΠ΅Ρ‚Π΅Ρ€Π±ΡƒΡ€Π³ сС ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅ конфСрСнцията C++ Russia Piter – Π΅Π΄Π½Π° ΠΎΡ‚ ΠΌΠ°Ρ‰Π°Π±Π½ΠΈΡ‚Π΅ ΠΊΠΎΠ½Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠΈ ΠΏΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅ Π² Русия, ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΈΡ€Π°Π½Π° ΠΎΡ‚ JUG Ru Group. Гост-Π»Π΅ΠΊΡ‚ΠΎΡ€ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π²Π°Ρ‚ Ρ‡Π»Π΅Π½ΠΎΠ²Π΅ Π½Π° ΠšΠΎΠΌΠΈΡ‚Π΅Ρ‚Π° ΠΏΠΎ стандартитС Π½Π° C++, Π»Π΅ΠΊΡ‚ΠΎΡ€ΠΈ Π½Π° CppCon, Π°Π²Ρ‚ΠΎΡ€ΠΈ Π½Π° ΠΊΠ½ΠΈΠ³ΠΈ Π½Π° O'Reilly ΠΈ ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Ρ‰ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ ΠΊΠ°Ρ‚ΠΎ LLVM, libc++ ΠΈ Boost. ΠšΠΎΠ½Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΡΡ‚Π° Π΅ насочСна към ΠΎΠΏΠΈΡ‚Π½ΠΈ C++ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ искат Π΄Π° Π·Π°Π΄ΡŠΠ»Π±ΠΎΡ‡Π°Ρ‚ своята СкспСртиза ΠΈ Π΄Π° обмСнят ΠΎΠΏΠΈΡ‚ Π² ΠΎΠ±Ρ‰ΡƒΠ²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΆΠΈΠ²ΠΎ. Π—Π° студСнти, спСциализанти ΠΈ унивСрситСтски ΠΏΡ€Π΅ΠΏΠΎΠ΄Π°Π²Π°Ρ‚Π΅Π»ΠΈ сС прСдоставят ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΠΎΠ±Ρ€ΠΈ ΠΎΡ‚ΡΡ‚ΡŠΠΏΠΊΠΈ.

ΠœΠΎΡΠΊΠΎΠ²ΡΠΊΠΎΡ‚ΠΎ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ Π½Π° конфСрСнцията Ρ‰Π΅ бъдС Π΄ΠΎΡΡ‚ΡŠΠΏΠ½ΠΎ Π·Π° посСщСниС ΠΎΡ‰Π΅ ΠΏΡ€Π΅Π· Π°ΠΏΡ€ΠΈΠ» слСдващата Π³ΠΎΠ΄ΠΈΠ½Π°, Π½ΠΎ ΠΌΠ΅ΠΆΠ΄ΡƒΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π½Π°ΡˆΠΈΡ‚Π΅ студСнти Ρ‰Π΅ Π²ΠΈ Ρ€Π°Π·ΠΊΠ°ΠΆΠ°Ρ‚ ΠΊΠ°ΠΊΠ²ΠΎ интСрСсно са Π½Π°ΡƒΡ‡ΠΈΠ»ΠΈ Π½Π° послСдното ΡΡŠΠ±ΠΈΡ‚ΠΈΠ΅. 

C++ Русия: ΠΊΠ°ΠΊ сС случи

Π‘Π½ΠΈΠΌΠΊΠ° ΠΎΡ‚ ΠΊΠΎΠ½Ρ„Π΅Ρ€Π΅Π½Ρ‚Π΅Π½ Π°Π»Π±ΡƒΠΌ

Π—Π° нас

На Ρ‚Π°Π·ΠΈ Π΄Π»ΡŠΠΆΠ½ΠΎΡΡ‚ са Ρ€Π°Π±ΠΎΡ‚ΠΈΠ»ΠΈ Π΄Π²Π°ΠΌΠ° студСнти ΠΎΡ‚ Националния изслСдоватСлски унивСрситСт β€žΠ’ΠΈΡΡˆΠ΅ ΡƒΡ‡ΠΈΠ»ΠΈΡ‰Π΅ ΠΏΠΎ ΠΈΠΊΠΎΠ½ΠΎΠΌΠΈΠΊΠ°β€œ – Π‘Π°Π½ΠΊΡ‚ ΠŸΠ΅Ρ‚Π΅Ρ€Π±ΡƒΡ€Π³:

  • Π›ΠΈΠ·Π° ВасилСнко Π΅ студСнтка ΠΎΡ‚ 4-Ρ‚Π° Π³ΠΎΠ΄ΠΈΠ½Π°, ΠΈΠ·ΡƒΡ‡Π°Π²Π°Ρ‰Π° Π•Π·ΠΈΡ†ΠΈ Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅ ΠΊΠ°Ρ‚ΠΎ част ΠΎΡ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ°Ρ‚Π° Π·Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ½Π° ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ° ΠΈ ΠΊΠΎΠΌΠΏΡŽΡ‚ΡŠΡ€Π½ΠΈ Π½Π°ΡƒΠΊΠΈ. Π‘Π»Π΅Π΄ ΠΊΠ°Ρ‚ΠΎ сС Π·Π°ΠΏΠΎΠ·Π½Π°Ρ… с Π΅Π·ΠΈΠΊΠ° C++ ΠΏΡ€Π΅Π· ΠΏΡŠΡ€Π²Π°Ρ‚Π° си Π³ΠΎΠ΄ΠΈΠ½Π° Π² унивСрситСта, впослСдствиС Π½Π°Ρ‚Ρ€ΡƒΠΏΠ°Ρ… ΠΎΠΏΠΈΡ‚ Π² Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° с Π½Π΅Π³ΠΎ Ρ‡Ρ€Π΅Π· стаТовС Π² индустрията. Бтрастта ΠΌΠΈ към Π΅Π·ΠΈΡ†ΠΈΡ‚Π΅ Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅ ΠΊΠ°Ρ‚ΠΎ цяло ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Π½ΠΎΡ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅ Π² частност остави своя ΠΎΡ‚ΠΏΠ΅Ρ‡Π°Ρ‚ΡŠΠΊ Π²ΡŠΡ€Ρ…Ρƒ ΠΏΠΎΠ΄Π±ΠΎΡ€Π° Π½Π° Π΄ΠΎΠΊΠ»Π°Π΄ΠΈΡ‚Π΅ Π½Π° конфСрСнцията.
  • Даня Π‘ΠΌΠΈΡ€Π½ΠΎΠ² Π΅ студСнт 1-Π²Π° Π³ΠΎΠ΄ΠΈΠ½Π° Π² ΠΌΠ°Π³ΠΈΡΡ‚ΡŠΡ€ΡΠΊΠ°Ρ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ° β€žΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅ ΠΈ Π°Π½Π°Π»ΠΈΠ· Π½Π° Π΄Π°Π½Π½ΠΈβ€œ. Π”ΠΎΠΊΠ°Ρ‚ΠΎ бях ΠΎΡ‰Π΅ Π² ΡƒΡ‡ΠΈΠ»ΠΈΡ‰Π΅, писах Π·Π°Π΄Π°Ρ‡ΠΈ Π·Π° ΠΎΠ»ΠΈΠΌΠΏΠΈΠ°Π΄Π° Π½Π° C++ ΠΈ слСд Ρ‚ΠΎΠ²Π° някак си сС случи, Ρ‡Π΅ Π΅Π·ΠΈΠΊΡŠΡ‚ постоянно сС появявашС Π² ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚Π΅Π»Π½ΠΈΡ‚Π΅ дСйности ΠΈ Π² ΠΊΡ€Π°ΠΉΠ½Π° смСтка стана основният Ρ€Π°Π±ΠΎΡ‚Π΅Π½ Π΅Π·ΠΈΠΊ. Π Π΅ΡˆΠΈΡ… Π΄Π° участвам Π² конфСрСнцията, Π·Π° Π΄Π° подобря знанията си ΠΈ Π΄Π° Π½Π°ΡƒΡ‡Π° Π·Π° Π½ΠΎΠ²ΠΈ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈ.

Π’ Π±ΡŽΠ»Π΅Ρ‚ΠΈΠ½Π° Ρ€ΡŠΠΊΠΎΠ²ΠΎΠ΄ΡΡ‚Π²ΠΎΡ‚ΠΎ Π½Π° Ρ„Π°ΠΊΡƒΠ»Ρ‚Π΅Ρ‚Π° чСсто сподСля информация Π·Π° ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚Π΅Π»Π½ΠΈ ΡΡŠΠ±ΠΈΡ‚ΠΈΡ, ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈ с Π½Π°ΡˆΠ°Ρ‚Π° спСциалност. ΠŸΡ€Π΅Π· сСптСмври видяхмС информация Π·Π° C++ Русия ΠΈ Ρ€Π΅ΡˆΠΈΡ…ΠΌΠ΅ Π΄Π° сС рСгистрирамС ΠΊΠ°Ρ‚ΠΎ ΡΠ»ΡƒΡˆΠ°Ρ‚Π΅Π»ΠΈ. Π—Π° ΠΏΡŠΡ€Π²ΠΈ ΠΏΡŠΡ‚ участвамС Π² ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ ΠΊΠΎΠ½Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠΈ.

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° Π½Π° конфСрСнцията

  • Π”ΠΎΠΊΠ»Π°Π΄ΠΈ

Π’ Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ Π½Π° Π΄Π²Π° Π΄Π½ΠΈ СкспСртитС ΠΏΡ€ΠΎΡ‡Π΅Ρ‚ΠΎΡ…Π° 30 Π΄ΠΎΠΊΠ»Π°Π΄Π°, ΠΎΠ±Ρ…Π²Π°Ρ‰Π°Ρ‰ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Π³ΠΎΡ€Π΅Ρ‰ΠΈ Ρ‚Π΅ΠΌΠΈ: Π³Π΅Π½ΠΈΠ°Π»Π½ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Π΅Π·ΠΈΠΊΠΎΠ²ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π·Π° Ρ€Π΅ΡˆΠ°Π²Π°Π½Π΅ Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ½ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ, прСдстоящи Π΅Π·ΠΈΠΊΠΎΠ²ΠΈ Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ във Π²Ρ€ΡŠΠ·ΠΊΠ° с новия стандарт, компромиси Π² Π΄ΠΈΠ·Π°ΠΉΠ½Π° Π½Π° C++ ΠΈ ΠΏΡ€Π΅Π΄ΠΏΠ°Π·Π½ΠΈ ΠΌΠ΅Ρ€ΠΊΠΈ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π° с Ρ‚Π΅Ρ…Π½ΠΈΡ‚Π΅ послСдствия, ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΈ Π½Π° интСрСсна Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, ΠΊΠ°ΠΊΡ‚ΠΎ ΠΈ някои Π΄Π΅Ρ‚Π°ΠΉΠ»ΠΈ ΠΏΠΎΠ΄ ΠΊΠ°ΠΏΠ°ΠΊΠ° Π½Π° Π΅Π·ΠΈΠΊΠΎΠ²Π°Ρ‚Π° инфраструктура. Π˜Π³Ρ€Π°Ρ…Π° сС Π΅Π΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Ρ‚Ρ€ΠΈ прСдставлСния, Π½Π°ΠΉ-чСсто Π΄Π²Π΅ Π½Π° руски ΠΈ Π΅Π΄Π½ΠΎ Π½Π° английски.

  • Дискусионни Π·ΠΎΠ½ΠΈ

Π‘Π»Π΅Π΄ ΠΈΠ·ΠΊΠ°Π·Π²Π°Π½Π΅Ρ‚ΠΎ всички Π½Π΅Π·Π°Π΄Π°Π΄Π΅Π½ΠΈ Π²ΡŠΠΏΡ€ΠΎΡΠΈ ΠΈ Π½Π΅Π΄ΠΎΠ²ΡŠΡ€ΡˆΠ΅Π½ΠΈ дискусии бяха ΠΏΡ€Π΅Ρ…Π²ΡŠΡ€Π»Π΅Π½ΠΈ Π² спСциално обособСни Π·ΠΎΠ½ΠΈ Π·Π° комуникация с Π»Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡ‚Π΅, ΠΎΠ±ΠΎΡ€ΡƒΠ΄Π²Π°Π½ΠΈ с ΠΌΠ°Ρ€ΠΊΠ΅Ρ€Π½ΠΈ Ρ‚Π°Π±Π»Π°. Π”ΠΎΠ±ΡŠΡ€ Π½Π°Ρ‡ΠΈΠ½ Π΄Π° ΠΏΡ€Π΅ΠΊΠ°Ρ€Π°Ρ‚Π΅ ΠΏΠΎΡ‡ΠΈΠ²ΠΊΠ°Ρ‚Π° ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€Π΅Ρ‡ΠΈΡ‚Π΅ с приятСн Ρ€Π°Π·Π³ΠΎΠ²ΠΎΡ€.

  • Π‘Π²Π΅Ρ‚ΠΊΠ°Π²ΠΈΡ‡Π½ΠΈ Ρ€Π°Π·Π³ΠΎΠ²ΠΎΡ€ΠΈ ΠΈ Π½Π΅Ρ„ΠΎΡ€ΠΌΠ°Π»Π½ΠΈ дискусии

Ако искатС Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ ΠΊΡ€Π°Ρ‚ΡŠΠΊ Π΄ΠΎΠΊΠ»Π°Π΄, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° сС Π·Π°ΠΏΠΈΡˆΠ΅Ρ‚Π΅ Π½Π° бялата дъска Π·Π° вСчСрния Lightning Talk ΠΈ Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ ΠΏΠ΅Ρ‚ ΠΌΠΈΠ½ΡƒΡ‚ΠΈ Π²Ρ€Π΅ΠΌΠ΅, Π·Π° Π΄Π° Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚Π΅ Π·Π° всичко ΠΏΠΎ Ρ‚Π΅ΠΌΠ°Ρ‚Π° Π½Π° конфСрСнцията. НапримСр, ΠΊΡ€Π°Ρ‚ΠΊΠΎ въвСдСниС Π² Π΄Π΅Π·ΠΈΠ½Ρ„Π΅ΠΊΡ‚Π°Π½Ρ‚ΠΈΡ‚Π΅ Π·Π° C++ (Π·Π° някои бСшС Π½ΠΎΠ²ΠΎ) ΠΈΠ»ΠΈ история Π·Π° Π³Ρ€Π΅ΡˆΠΊΠ° Π² Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° синусоида, която ΠΌΠΎΠΆΠ΅ само Π΄Π° сС Ρ‡ΡƒΠ΅, Π½ΠΎ Π½Π΅ ΠΈ Π΄Π° сС Π²ΠΈΠ΄ΠΈ.

Π”Ρ€ΡƒΠ³ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Π΅ ΠΏΠ°Π½Π΅Π»Π½Π°Ρ‚Π° дискусия β€žΠ‘ комисия ΠΎΡ‚ ΡΡŠΡ€Ρ†Π΅ Π½Π° ΡΡŠΡ€Ρ†Π΅β€œ. На сцСната са някои Ρ‡Π»Π΅Π½ΠΎΠ²Π΅ Π½Π° комисията ΠΏΠΎ стандартизация, Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΡ€Π° ΠΈΠΌΠ° ΠΊΠ°ΠΌΠΈΠ½Π° (ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»Π½ΠΎ - Π·Π° създаванС Π½Π° искрСна атмосфСра, Π½ΠΎ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°Ρ‚Π° "Π·Π°Ρ‰ΠΎΡ‚ΠΎ Π’Π‘Π˜Π§ΠšΠž Π“ΠžΠ Π˜" ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° ΠΏΠΎ-смСшна), Π²ΡŠΠΏΡ€ΠΎΡΠΈ Π·Π° стандарта ΠΈ ΠΎΠ±Ρ‰Π°Ρ‚Π° визия Π½Π° C++ , Π±Π΅Π· Ρ€Π°Π·Π³ΠΎΡ€Π΅Ρ‰Π΅Π½ΠΈ тСхничСски дискусии ΠΈ Ρ…ΠΎΠ»ΠΈΠ²Π°Ρ€ΠΈ. Оказа сС, Ρ‡Π΅ Π² комисията ΠΈΠΌΠ° ΠΈ ΠΆΠΈΠ²ΠΈ Ρ…ΠΎΡ€Π°, ΠΊΠΎΠΈΡ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° Π½Π΅ са напълно сигурни Π² Π½Π΅Ρ‰ΠΎ ΠΈΠ»ΠΈ Π΄Π° Π½Π΅ знаят Π½Π΅Ρ‰ΠΎ.

Π—Π° Ρ„Π΅Π½ΠΎΠ²Π΅Ρ‚Π΅ Π½Π° holivars Ρ‚Ρ€Π΅Ρ‚ΠΎΡ‚ΠΎ ΡΡŠΠ±ΠΈΡ‚ΠΈΠ΅ остана ΠΏΠΎ случая - BOF сСсията β€žGo vs. C++β€œ. Π’Π·Π΅ΠΌΠ°ΠΌΠ΅ Π»ΡŽΠ±ΠΈΡ‚Π΅Π» Π½Π° Go, Π»ΡŽΠ±ΠΈΡ‚Π΅Π» Π½Π° C++, ΠΏΡ€Π΅Π΄ΠΈ Π½Π°Ρ‡Π°Π»ΠΎΡ‚ΠΎ Π½Π° сСсията Ρ‚Π΅ Π·Π°Π΅Π΄Π½ΠΎ подготвят 100500 XNUMX слайда ΠΏΠΎ Ρ‚Π΅ΠΌΠ° (ΠΊΠ°Ρ‚ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ с ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ Π² C++ ΠΈΠ»ΠΈ липсата Π½Π° Π³Π΅Π½Π΅Ρ€ΠΈΡ‡Π½ΠΈ ΠΊΠΎΠ΄ΠΎΠ²Π΅ Π² Go), слСд ΠΊΠΎΠ΅Ρ‚ΠΎ водят ΠΎΠΆΠΈΠ²Π΅Π½Π° дискусия ΠΏΠΎΠΌΠ΅ΠΆΠ΄Ρƒ си ΠΈ с ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ‚Π°, Π° ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ‚Π° сС ΠΎΠΏΠΈΡ‚Π²Π° Π΄Π° Ρ€Π°Π·Π±Π΅Ρ€Π΅ Π΄Π²Π΅ Π³Π»Π΅Π΄Π½ΠΈ Ρ‚ΠΎΡ‡ΠΊΠΈ Π΅Π΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ. Ако Ρ…ΠΎΠ»ΠΈΠ²Π°Ρ€ΡŠΡ‚ Π·Π°ΠΏΠΎΡ‡Π½Π΅ извън контСкста, ΠΌΠΎΠ΄Π΅Ρ€Π°Ρ‚ΠΎΡ€ΡŠΡ‚ сС намСсва ΠΈ помирява странитС. Π’ΠΎΠ·ΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Π΅ пристрастяващ: няколко часа слСд Π½Π°Ρ‡Π°Π»ΠΎΡ‚ΠΎ само ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π°Ρ‚Π° ΠΎΡ‚ слайдовСтС бяха Π·Π°Π²ΡŠΡ€ΡˆΠ΅Π½ΠΈ. ΠšΡ€Π°ΡΡ‚ Ρ‚Ρ€ΡΠ±Π²Π°ΡˆΠ΅ Π΄Π° бъдС Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ ускорСн.

  • ΠŸΠ°Ρ€Ρ‚Π½ΡŒΠΎΡ€ΡΠΊΠΈ стойки

ΠŸΠ°Ρ€Ρ‚Π½ΡŒΠΎΡ€ΠΈΡ‚Π΅ Π½Π° конфСрСнцията бяха прСдставСни Π² Π·Π°Π»ΠΈΡ‚Π΅ – Π½Π° Ρ‰Π°Π½Π΄ΠΎΠ²Π΅Ρ‚Π΅ Ρ‚Π΅ разговаряха Π·Π° Ρ‚Π΅ΠΊΡƒΡ‰ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ, ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Ρ…Π° стаТовС ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°, ΠΏΡ€ΠΎΠ²Π΅Π΄ΠΎΡ…Π° Π²ΠΈΠΊΡ‚ΠΎΡ€ΠΈΠ½ΠΈ ΠΈ ΠΌΠ°Π»ΠΊΠΈ ΡΡŠΡΡ‚Π΅Π·Π°Π½ΠΈΡ, Π° ΡΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° Ρ€Π°Π·ΠΈΠ³Ρ€Π°Ρ…Π° Ρ…ΡƒΠ±Π°Π²ΠΈ Π½Π°Π³Ρ€Π°Π΄ΠΈ. Π’ ΡΡŠΡ‰ΠΎΡ‚ΠΎ Π²Ρ€Π΅ΠΌΠ΅ някои ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Π΄ΠΎΡ€ΠΈ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΡ…Π° Π΄Π° ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Ρ‚ ΠΏΡ€Π΅Π· Π½Π°Ρ‡Π°Π»Π½ΠΈΡ‚Π΅ Π΅Ρ‚Π°ΠΏΠΈ Π½Π° ΠΈΠ½Ρ‚Π΅Ρ€Π²ΡŽΡ‚Π°, ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π·Π° ΠΎΠ½Π΅Π·ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ ΠΈΠ΄Π²Π°Ρ‚ Π½Π΅ само Π΄Π° ΡΠ»ΡƒΡˆΠ°Ρ‚ Π΄ΠΎΠΊΠ»Π°Π΄ΠΈ.

ВСхничСски Π΄Π΅Ρ‚Π°ΠΉΠ»ΠΈ Π½Π° ΠΎΡ‚Ρ‡Π΅Ρ‚ΠΈΡ‚Π΅

И Π΄Π²Π°Ρ‚Π° Π΄Π½ΠΈ ΡΠ»ΡƒΡˆΠ°Ρ…ΠΌΠ΅ Π΄ΠΎΠΊΠ»Π°Π΄ΠΈ. На ΠΌΠΎΠΌΠ΅Π½Ρ‚ΠΈ бСшС Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ Π΄Π° ΠΈΠ·Π±Π΅Ρ€Π΅ΠΌ Π΅Π΄ΠΈΠ½ Π΄ΠΎΠΊΠ»Π°Π΄ ΠΎΡ‚ ΠΏΠ°Ρ€Π°Π»Π΅Π»Π½ΠΈΡ‚Π΅ – Ρ€Π°Π·Π±Ρ€Π°Ρ…ΠΌΠ΅ сС Π΄Π° сС Ρ€Π°Π·Π΄Π΅Π»ΠΈΠΌ ΠΈ Π΄Π° ΠΎΠ±ΠΌΠ΅Π½ΠΈΠΌ Π½Π°Ρ‚Ρ€ΡƒΠΏΠ°Π½ΠΈΡ‚Π΅ знания Π² ΠΏΠΎΡ‡ΠΈΠ²ΠΊΠΈΡ‚Π΅. И Π²ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‚ΠΎΠ²Π° ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π°, Ρ‡Π΅ ΠΌΠ½ΠΎΠ³ΠΎ Π΅ пропуснато. Π’ΡƒΠΊ Π±ΠΈΡ…ΠΌΠ΅ искали Π΄Π° Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ Π·Π° ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° някои ΠΎΡ‚ Π΄ΠΎΠΊΠ»Π°Π΄ΠΈΡ‚Π΅, ΠΊΠΎΠΈΡ‚ΠΎ смСтнахмС Π·Π° Π½Π°ΠΉ-интСрСсни

Π˜Π·ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡΡ‚Π° Π² C++ ΠΏΡ€Π΅Π· ΠΏΡ€ΠΈΠ·ΠΌΠ°Ρ‚Π° Π½Π° ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈΡ‚Π΅ Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€Π°, Π ΠΎΠΌΠ°Π½ РусяСв

C++ Русия: ΠΊΠ°ΠΊ сС случи
Π‘Π»Π°ΠΉΠ΄ ΠΎΡ‚ прСдставянС

ΠšΠ°ΠΊΡ‚ΠΎ подсказва Π·Π°Π³Π»Π°Π²ΠΈΠ΅Ρ‚ΠΎ, Π ΠΎΠΌΠ°Π½ Ρ€Π°Π·Π³Π»Π΅Π΄Π° Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° с ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ LLVM ΠΊΠ°Ρ‚ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€. Π’ ΡΡŠΡ‰ΠΎΡ‚ΠΎ Π²Ρ€Π΅ΠΌΠ΅, Π·Π° Ρ‚Π΅Π·ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ Π½Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Clang Π² Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° си, Π΄ΠΎΠΊΠ»Π°Π΄ΡŠΡ‚ всС ΠΎΡ‰Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° Π΄Π°Π΄Π΅ някаква прСдстава Π·Π° Ρ‚ΠΎΠ²Π° ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ΡŠΡ‚ ΠΌΠΎΠΆΠ΅ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»Π½ΠΎ Π΄Π° бъдС ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€Π°Π½. Π’ΠΎΠ²Π° Π΅ Ρ‚Π°ΠΊΠ°, Π·Π°Ρ‰ΠΎΡ‚ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈΡ‚Π΅ Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€ΠΈ ΠΈ ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΈΡ‚Π΅ стандартни Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΊΠΎΠΌΡƒΠ½ΠΈΠΊΠΈΡ€Π°Ρ‚ ΠΏΠΎΠΌΠ΅ΠΆΠ΄Ρƒ си ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° ΡΡŠΠ²ΠΏΠ°Π΄Π°Ρ‚.

Π’Π°ΠΊΠ° Ρ‡Π΅, Π·Π° Π΄Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅, трябва Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ ΠΌΠ½ΠΎΠ³ΠΎ Π½Π΅Ρ‰Π°: Π΄Π° ΠΈΠ·Π²ΠΈΠΊΠ°Ρ‚Π΅ ΠΊΠΎΠ΄Π° Π·Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° (Π°ΠΊΠΎ ΠΈΠΌΠ° Ρ‚Π°ΠΊΡŠΠ²) ΠΈΠ»ΠΈ Π΄Π° освободитС рСсурси Π½Π° Ρ‚Π΅ΠΊΡƒΡ‰ΠΎΡ‚ΠΎ Π½ΠΈΠ²ΠΎ ΠΈ Π΄Π° Π·Π°Π²ΡŠΡ€Ρ‚ΠΈΡ‚Π΅ стСка ΠΏΠΎ-високо. Всичко Ρ‚ΠΎΠ²Π° Π²ΠΎΠ΄ΠΈ Π΄ΠΎ Ρ„Π°ΠΊΡ‚Π°, Ρ‡Π΅ ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€ΡŠΡ‚ добавя Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈ инструкции Π·Π° извиквания, ΠΊΠΎΠΈΡ‚ΠΎ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»Π½ΠΎ Ρ…Π²ΡŠΡ€Π»ΡΡ‚ ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»Π½ΠΎ, Π°ΠΊΠΎ ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π΅ Π΅ дСйствитСлно ΠΏΠΎΠ²Π΄ΠΈΠ³Π½Π°Ρ‚ΠΎ, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ°Ρ‚Π° Ρ‰Π΅ ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠΈ Π΄Π° ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π° Π½Π΅Π½ΡƒΠΆΠ½ΠΈ дСйствия. Π—Π° Π΄Π° Π½Π°ΠΌΠ°Π»ΠΈ ΠΏΠΎ някакъв Π½Π°Ρ‡ΠΈΠ½ Ρ€Π΅ΠΆΠΈΠΉΠ½ΠΈΡ‚Π΅ Ρ€Π°Π·Ρ…ΠΎΠ΄ΠΈ, LLVM ΠΈΠΌΠ° няколко Свристики Π·Π° опрСдСлянС Π½Π° ситуации, ΠΏΡ€ΠΈ ΠΊΠΎΠΈΡ‚ΠΎ Π½Π΅ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° сС добавя ΠΊΠΎΠ΄ Π·Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΈΠ»ΠΈ броят Π½Π° β€žΠ΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈΡ‚Π΅β€œ инструкции ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС Π½Π°ΠΌΠ°Π»Π΅Π½.

Π›Π΅ΠΊΡ‚ΠΎΡ€ΡŠΡ‚ Ρ€Π°Π·Π³Π»Π΅ΠΆΠ΄Π° ΠΎΠΊΠΎΠ»ΠΎ Π΄ΡƒΠ·ΠΈΠ½Π° ΠΎΡ‚ тях ΠΈ ΠΏΠΎΠΊΠ°Π·Π²Π° ΠΊΠ°ΠΊΡ‚ΠΎ ситуации, Π² ΠΊΠΎΠΈΡ‚ΠΎ Ρ‚Π΅ ΠΏΠΎΠΌΠ°Π³Π°Ρ‚ Π·Π° ускоряванС Π½Π° ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ°Ρ‚Π°, Ρ‚Π°ΠΊΠ° ΠΈ Ρ‚Π΅Π·ΠΈ, Π² ΠΊΠΎΠΈΡ‚ΠΎ Ρ‚Π΅Π·ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ Π½Π΅ са ΠΏΡ€ΠΈΠ»ΠΎΠΆΠΈΠΌΠΈ.

По Ρ‚ΠΎΠ·ΠΈ Π½Π°Ρ‡ΠΈΠ½ Π ΠΎΠΌΠ°Π½ РусяСв Π²ΠΎΠ΄ΠΈ ΡƒΡ‡Π΅Π½ΠΈΡ†ΠΈΡ‚Π΅ Π΄ΠΎ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅Ρ‚ΠΎ, Ρ‡Π΅ ΠΊΠΎΠ΄ΡŠΡ‚, ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Ρ‰ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ, Π½Π΅ Π²ΠΈΠ½Π°Π³ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС изпълнСн с Π½ΡƒΠ»Π΅Π²ΠΈ Ρ€Π°Π·Ρ…ΠΎΠ΄ΠΈ ΠΈ Π΄Π°Π²Π° слСдния ΡΡŠΠ²Π΅Ρ‚:

  • ΠΊΠΎΠ³Π°Ρ‚ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π²Π°Ρ‚Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, ΠΏΠΎ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ си струва Π΄Π° изоставитС ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡΡ‚Π°;
  • Π°ΠΊΠΎ всС ΠΎΡ‰Π΅ са Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈ ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ, Ρ‚ΠΎΠ³Π°Π²Π°, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π΅ възмоТно, си струва Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΡ‚Π΅ noexcept (ΠΈ const) ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΈ навсякъдС, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€ΡŠΡ‚ Π΄Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€Π° ΠΊΠΎΠ»ΠΊΠΎΡ‚ΠΎ Π΅ възмоТно ΠΏΠΎΠ²Π΅Ρ‡Π΅.

ΠšΠ°Ρ‚ΠΎ цяло ΠΎΡ€Π°Ρ‚ΠΎΡ€ΡŠΡ‚ ΠΏΠΎΡ‚Π²ΡŠΡ€Π΄ΠΈ ΠΌΠ½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ, Ρ‡Π΅ ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡΡ‚Π° Π΅ Π½Π°ΠΉ-Π΄ΠΎΠ±Ρ€Π΅ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Π΄ΠΎ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ ΠΈΠ»ΠΈ Π΄Π° сС изоставят напълно.

Π‘Π»Π°ΠΉΠ΄ΠΎΠ²Π΅Ρ‚Π΅ Π½Π° Π΄ΠΎΠΊΠ»Π°Π΄Π° са Π΄ΠΎΡΡ‚ΡŠΠΏΠ½ΠΈ Π½Π° слСдната Π²Ρ€ΡŠΠ·ΠΊΠ°: [β€žC++ ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΏΡ€Π΅Π· ΠΏΡ€ΠΈΠ·ΠΌΠ°Ρ‚Π° Π½Π° ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π° LLVM ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€β€œ]

Π“Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΈ, ΡΡŠΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈ сладости Π·Π° Ρ€Π°Π·Π²ΠΈΠ²Π°Π½Π΅ Π½Π° мозъка, Ади Π¨Π°Π²ΠΈΡ‚

C++ Русия: ΠΊΠ°ΠΊ сС случи
Π‘Π»Π°ΠΉΠ΄ ΠΎΡ‚ прСдставянС

Π•Π΄ΠΈΠ½ ΠΎΡ‚ ΠΌΠ½ΠΎΠ³ΠΎΡ‚ΠΎ Π΄ΠΎΠΊΠ»Π°Π΄ΠΈ Π½Π° Ρ‚Π°Π·ΠΈ конфСрСнция, посвСтСни Π½Π° ΠΈΠ½ΠΎΠ²Π°Ρ†ΠΈΠΈΡ‚Π΅ Π² C++20, бСшС запомнящ сС Π½Π΅ само с Ρ†Π²Π΅Ρ‚Π½ΠΎΡ‚ΠΎ си прСдставянС, Π½ΠΎ ΠΈ с ясното ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€Π°Π½Π΅ Π½Π° ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ‰ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ с Π»ΠΎΠ³ΠΈΠΊΠ°Ρ‚Π° Π·Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° колСкцията (for Ρ†ΠΈΠΊΡŠΠ», ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΈ извиквания).

Ади Π¨Π°Π²ΠΈΡ‚ ΠΏΠΎΠ΄Ρ‡Π΅Ρ€Ρ‚Π°Π²Π° слСдното: Π½Π°Π»ΠΈΡ‡Π½ΠΈΡ‚Π΅ Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Π²Π°Ρ‚ ΠΏΡ€Π΅Π· цялата колСкция ΠΈ Π½Π΅ осигуряват Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ някакво Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½ΠΎ ΠΌΠ΅ΠΆΠ΄ΠΈΠ½Π½ΠΎ ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅ (ΠΈΠ»ΠΈ Π³ΠΎ правят Π² случай Π½Π° ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΈ извиквания, Π½ΠΎ с голям Π±Ρ€ΠΎΠΉ нСприятни странични Π΅Ρ„Π΅ΠΊΡ‚ΠΈ, ΠΊΠ°Ρ‚ΠΎ Callback Hell) . ИзглСТда, Ρ‡Π΅ ΠΈΠΌΠ° ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΈ, Π½ΠΎ Π΄ΠΎΡ€ΠΈ ΠΈ с тях всичко Π½Π΅ Π΅ Ρ‚ΠΎΠ»ΠΊΠΎΠ²Π° Π³Π»Π°Π΄ΠΊΠΎ: няма ΠΎΠ±Ρ‰ΠΈ Π²Ρ…ΠΎΠ΄Π½ΠΈ ΠΈ ΠΈΠ·Ρ…ΠΎΠ΄Π½ΠΈ Ρ‚ΠΎΡ‡ΠΊΠΈ (Π½Π°Ρ‡Π°Π»ΠΎ β†’ ΠΊΡ€Π°ΠΉ срСщу rbegin β†’ Ρ€Π°Π·ΠΊΡŠΡΠ²Π°Π½Π΅ ΠΈ Ρ‚.Π½.), Π½Π΅ Π΅ ясно ΠΊΠΎΠ»ΠΊΠΎ дълго Ρ‰Π΅ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΠΌ? Π—Π°ΠΏΠΎΡ‡Π²Π°ΠΉΠΊΠΈ с C++20, Ρ‚Π΅Π·ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ са Ρ€Π΅ΡˆΠ΅Π½ΠΈ!

ΠŸΡŠΡ€Π²ΠΈ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚: Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΈ. Π§Ρ€Π΅Π· ΠΎΠΏΠ°ΠΊΠΎΠ²Π°Π½Π΅ Π½Π° ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΈ, Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°ΠΌΠ΅ ΠΎΠ±Ρ‰ интСрфСйс Π·Π° Π½Π°Ρ‡Π°Π»ΠΎΡ‚ΠΎ ΠΈ края Π½Π° итСрация ΠΈ ΡΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°ΠΌΠ΅ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π·Π° ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ€Π°Π½Π΅. Всичко Ρ‚ΠΎΠ²Π° улСснява ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΏΡŠΠ»Π½ΠΎΡ†Π΅Π½Π½ΠΈ Ρ‚Ρ€ΡŠΠ±ΠΎΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈ Π·Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° Π΄Π°Π½Π½ΠΈ. Но Π½Π΅ всичко Π΅ Ρ‚ΠΎΠ»ΠΊΠΎΠ²Π° Π³Π»Π°Π΄ΠΊΠΎ: част ΠΎΡ‚ Π»ΠΎΠ³ΠΈΠΊΠ°Ρ‚Π° Π½Π° изчислСниСто сС Π½Π°ΠΌΠΈΡ€Π° Π²ΡŠΡ‚Ρ€Π΅ Π² имплСмСнтацията Π½Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π΅Π½ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€, ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° услоТни ΠΊΠΎΠ΄Π° Π·Π° Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ ΠΈ отстраняванС Π½Π° Π³Ρ€Π΅ΡˆΠΊΠΈ.

C++ Русия: ΠΊΠ°ΠΊ сС случи
Π‘Π»Π°ΠΉΠ΄ ΠΎΡ‚ прСдставянС

Π•, Π·Π° Ρ‚ΠΎΠ·ΠΈ случай C++20 Π΄ΠΎΠ±Π°Π²ΠΈ ΠΊΠΎΡ€ΡƒΡ‚ΠΈΠ½ΠΈ (Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Ρ‡ΠΈΠ΅Ρ‚ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π΅ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ Π½Π° Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΈΡ‚Π΅ Π² Python): ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС ΠΎΡ‚Π»ΠΎΠΆΠ΅Π½ΠΎ Ρ‡Ρ€Π΅Π· Π²Ρ€ΡŠΡ‰Π°Π½Π΅ Π½Π° някаква Ρ‚Π΅ΠΊΡƒΡ‰Π° стойност, ΠΊΠ°Ρ‚ΠΎ ΡΡŠΡ‰Π΅Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ сС Π·Π°ΠΏΠ°Π·ΠΈ ΠΌΠ΅ΠΆΠ΄ΠΈΠ½Π½ΠΎ ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅. По Ρ‚ΠΎΠ·ΠΈ Π½Π°Ρ‡ΠΈΠ½ постигамС Π½Π΅ само Ρ€Π°Π±ΠΎΡ‚Π° с Π΄Π°Π½Π½ΠΈ, ΠΊΠ°ΠΊΡ‚ΠΎ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π°Ρ‚, Π½ΠΎ ΠΈ капсулиранС Π½Π° цялата Π»ΠΎΠ³ΠΈΠΊΠ° Π² ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Π° ΡΡŠΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ°.

Но ΠΈΠΌΠ° Π΅Π΄Π½Π° ΠΌΡƒΡ…Π° Π² ΠΌΠ΅Ρ…Π»Π΅ΠΌΠ°: Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° Ρ‚Π΅ сС ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Ρ‚ само частично ΠΎΡ‚ ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ‰ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€ΠΈ ΠΈ ΡΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° Π½Π΅ сС ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‚ Ρ‚ΠΎΠ»ΠΊΠΎΠ²Π° спрСтнато, ΠΊΠΎΠ»ΠΊΠΎΡ‚ΠΎ Π±ΠΈΡ…ΠΌΠ΅ искали: Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, всС ΠΎΡ‰Π΅ Π½Π΅ си струва Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ ΠΏΡ€Π΅ΠΏΡ€Π°Ρ‚ΠΊΠΈ ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΈ ΠΎΠ±Π΅ΠΊΡ‚ΠΈ Π² ΠΊΠΎΡ€ΡƒΡ‚ΠΈΠ½ΠΈΡ‚Π΅. ОсвСн Ρ‚ΠΎΠ²Π° ΠΈΠΌΠ° някои ограничСния Π·Π° Ρ‚ΠΎΠ²Π° ΠΊΠ°ΠΊΠ²ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС ΡΡŠΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈΡ‚Π΅ constexpr, конструкторитС/дСструкторитС ΠΈ main Π½Π΅ са Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈ Π² Ρ‚ΠΎΠ·ΠΈ списък.

По Ρ‚ΠΎΠ·ΠΈ Π½Π°Ρ‡ΠΈΠ½ ΡΡŠΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ‚Π΅ Ρ€Π΅ΡˆΠ°Π²Π°Ρ‚ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½Π° част ΠΎΡ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈΡ‚Π΅ с простотата Π½Π° Π»ΠΎΠ³ΠΈΠΊΠ°Ρ‚Π° Π·Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° Π΄Π°Π½Π½ΠΈ, Π½ΠΎ настоящитС ΠΈΠΌ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ изискват ΠΏΠΎΠ΄ΠΎΠ±Ρ€Π΅Π½ΠΈΠ΅.

ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΈ:

C++ Ρ‚Ρ€ΠΈΠΊΠΎΠ²Π΅ ΠΎΡ‚ Yandex.Taxi, Антон ΠŸΠΎΠ»ΡƒΡ…ΠΈΠ½

Π’ профСсионалнитС си дСйности понякога сС Π½Π°Π»Π°Π³Π° Π΄Π° внСдрявам чисто спомагатСлни Π½Π΅Ρ‰Π°: ΠΎΠ±Π²ΠΈΠ²ΠΊΠ° ΠΌΠ΅ΠΆΠ΄Ρƒ Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½ΠΈΡ интСрфСйс ΠΈ API Π½Π° някаква Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°, Π»ΠΎΠ³Π²Π°Π½Π΅ ΠΈΠ»ΠΈ парсванС. Π’ Ρ‚ΠΎΠ·ΠΈ случай ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ няма Π½ΡƒΠΆΠ΄Π° ΠΎΡ‚ Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½Π° оптимизация. Но ΠΊΠ°ΠΊΠ²ΠΎ Ρ‰Π΅ станС, Π°ΠΊΠΎ Ρ‚Π΅Π·ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Π² някои ΠΎΡ‚ Π½Π°ΠΉ-популярнитС услуги Π² RuNet? Π’ Ρ‚Π°ΠΊΠ°Π²Π° ситуация Ρ‰Π΅ трябва Π΄Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π°Ρ‚Π΅ Ρ‚Π΅Ρ€Π°Π±Π°ΠΉΡ‚ΠΈ Π½Π° час ΠΎΡ‚ рСгистрационни Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ сами! Π’ΠΎΠ³Π°Π²Π° всяка милисСкунда Π΅ ΠΎΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈ Π·Π°Ρ‚ΠΎΠ²Π° трябва Π΄Π° прибягватС Π΄ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Ρ‚Ρ€ΠΈΠΊΠΎΠ²Π΅ - Антон ΠŸΠΎΠ»ΡƒΡ…ΠΈΠ½ Π³ΠΎΠ²ΠΎΡ€ΠΈ Π·Π° тях.

МоТС Π±ΠΈ Π½Π°ΠΉ-интСрСсният ΠΏΡ€ΠΈΠΌΠ΅Ρ€ бСшС ΠΏΡ€ΠΈΠ»Π°Π³Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΌΠΎΠ΄Π΅Π»Π° ΠΎΡ‚ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π» към изпълнСниС (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 Ρ„Π°ΠΉΠ»Π°: ΠΈΠΌΠ°ΠΌΠ΅ Π½ΡƒΠΆΠ΄Π° ΠΎΡ‚ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»Π½Π° дСкларация Π½Π° опакования 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<kImplSize, kImplAlign> data_; 
};

ЕдинствСният ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ: трябва Π΄Π° посочитС Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΈ подравняванСто Π·Π° всяка ΠΎΠ±Π²ΠΈΠ²ΠΊΠ° - Π½Π΅ΠΊΠ° Π½Π°ΠΏΡ€Π°Π²ΠΈΠΌ нашия шаблон pimpl с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ , ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ някои ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»Π½ΠΈ стойности ΠΈ Π΄ΠΎΠ±Π°Π²Π΅Ρ‚Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° към дСструктора, Ρ‡Π΅ смС Π½Π°ΠΏΡ€Π°Π²ΠΈΠ»ΠΈ всичко ΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΎ: 

~FastPimpl() noexcept { 
    validate<sizeof(T), alignof(T)>(); 
    Ptr()->~T(); 
}

template <std::size_t ActualSize, std::size_t ActualAlignment>
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 Ρ„Π°ΠΉΠ» с имплСмСнтацията ΠΈ ΡΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°ΠΌΠ΅ Π΄ΠΈΠ·Π°ΠΉΠ½, ΠΊΠΎΠΉΡ‚ΠΎ Π΅ ΠΏΠΎ-подходящ Π·Π° ΠΊΠ΅ΡˆΠΈΡ€Π°Π½Π΅ ΠΎΡ‚ процСсора.

РСгистриранСто ΠΈ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π°Ρ…Π° ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ впСчатляващи ΠΈ Π·Π°Ρ‚ΠΎΠ²Π° няма Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ спомСнати Π² Ρ‚ΠΎΠ·ΠΈ ΠΏΡ€Π΅Π³Π»Π΅Π΄.

Π‘Π»Π°ΠΉΠ΄ΠΎΠ²Π΅Ρ‚Π΅ Π½Π° Π΄ΠΎΠΊΠ»Π°Π΄Π° са Π΄ΠΎΡΡ‚ΡŠΠΏΠ½ΠΈ Π½Π° слСдната Π²Ρ€ΡŠΠ·ΠΊΠ°: ["C++ Ρ‚Ρ€ΠΈΠΊΠΎΠ²Π΅ ΠΎΡ‚ Taxi"]

Π‘ΡŠΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΈ Ρ‚Π΅Ρ…Π½ΠΈΠΊΠΈ Π·Π° ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Π½Π΅ Π½Π° вашия ΠΊΠΎΠ΄ Π‘Π£Π₯, BjΓΆrn Fahller

Π’ Ρ‚ΠΎΠ·ΠΈ Ρ€Π°Π·Π³ΠΎΠ²ΠΎΡ€ Π‘ΡŒΠΎΡ€Π½ Π€Π°Π»Π΅Ρ€ ΠΏΠΎΠΊΠ°Π·Π²Π° няколко Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Π½Π°Ρ‡ΠΈΠ½Π° Π·Π° Π±ΠΎΡ€Π±Π° със стилистичния Π½Π΅Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΠΊ Π½Π° ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π½Π° ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅Ρ‚ΠΎ:

assert(a == IDLE || a == CONNECTED || a == DISCONNECTED);

Π—Π²ΡƒΡ‡ΠΈ Π»ΠΈ Π²ΠΈ ΠΏΠΎΠ·Π½Π°Ρ‚ΠΎ? Π§Ρ€Π΅Π· ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° няколко ΠΌΠΎΡ‰Π½ΠΈ C++ Ρ‚Π΅Ρ…Π½ΠΈΠΊΠΈ, въвСдСни Π² послСднитС стандарти, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΅Π»Π΅Π³Π°Π½Ρ‚Π½ΠΎ Π΄Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠΈΡ‚Π΅ ΡΡŠΡ‰Π°Ρ‚Π° функционалност Π±Π΅Π· Π½ΠΈΠΊΠ°ΠΊΠ²ΠΎ ΡƒΠ²Ρ€Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° производитСлността. Π‘Ρ€Π°Π²Π½Π΅Ρ‚Π΅:   

assert(a == any_of(IDLE, CONNECTED, DISCONNECTED));

Π—Π° Π΄Π° сС справитС с нСфиксиран Π±Ρ€ΠΎΠΉ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ, Π½Π΅Π·Π°Π±Π°Π²Π½ΠΎ трябва Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ шаблони ΠΈ ΠΈΠ·Ρ€Π°Π·ΠΈ Π·Π° сгъванС. Π”Π° ΠΏΡ€ΠΈΠ΅ΠΌΠ΅ΠΌ, Ρ‡Π΅ искамС Π΄Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠΌ равСнството Π½Π° няколко ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ спрямо Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚Π° state_type Π½Π° enum. ΠŸΡŠΡ€Π²ΠΎΡ‚ΠΎ Π½Π΅Ρ‰ΠΎ, ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΈΠ΄Π²Π° Π½Π° ΡƒΠΌ Π΅ Π΄Π° напишСм ΠΏΠΎΠΌΠΎΡ‰Π½Π° функция is_any_of:


enum state_type { IDLE, CONNECTED, DISCONNECTED };

template <typename ... Ts>
bool is_any_of(state_type s, const Ts& ... ts) { 
    return ((s == ts) || ...); 
}

Π’ΠΎΠ·ΠΈ ΠΌΠ΅ΠΆΠ΄ΠΈΠ½Π΅Π½ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ Π΅ Ρ€Π°Π·ΠΎΡ‡Π°Ρ€ΠΎΠ²Π°Ρ‰. ЗасСга ΠΊΠΎΠ΄ΡŠΡ‚ Π½Π΅ става ΠΏΠΎ-Ρ‡Π΅Ρ‚Π»ΠΈΠ²:

assert(is_any_of(state, IDLE, DISCONNECTING, DISCONNECTED)); 

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΡ‚Π΅ Π½Π° шаблона Π±Π΅Π· Ρ‚ΠΈΠΏ Ρ‰Π΅ ΠΏΠΎΠΌΠΎΠ³Π½Π°Ρ‚ Π·Π° ΠΌΠ°Π»ΠΊΠΎ подобряванС Π½Π° ситуацията. Π‘ тяхна ΠΏΠΎΠΌΠΎΡ‰ Ρ‰Π΅ ΠΏΡ€Π΅Ρ…Π²ΡŠΡ€Π»ΠΈΠΌ ΠΈΠ·Π±Ρ€ΠΎΠΈΠΌΠΈΡ‚Π΅ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ΠΈ Π½Π° enum Π² списъка с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ Π½Π° шаблона: 

template <state_type ... states>
bool is_any_of(state_type t) { 
    return ((t == states) | ...); 
}
	
assert(is_any_of<IDLE, DISCONNECTING, DISCONNECTED>(state)); 

Π§Ρ€Π΅Π· ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° auto Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚ΡŠΡ€ Π½Π° шаблон Π±Π΅Π· Ρ‚ΠΈΠΏ (C++17), ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΡŠΡ‚ просто сС ΠΎΠ±ΠΎΠ±Ρ‰Π°Π²Π° Π΄ΠΎ сравнСния Π½Π΅ само с Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ΠΈ Π½Π° state_type, Π½ΠΎ ΠΈ с ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½ΠΈ Ρ‚ΠΈΠΏΠΎΠ²Π΅, ΠΊΠΎΠΈΡ‚ΠΎ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ ΠΊΠ°Ρ‚ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ Π½Π° шаблон Π±Π΅Π· Ρ‚ΠΈΠΏ:


template <auto ... alternatives, typename T>
bool is_any_of(const T& t) {
    return ((t == alternatives) | ...);
}

Π§Ρ€Π΅Π· Ρ‚Π΅Π·ΠΈ послСдоватСлни подобрСния сС постига ТСланият ΠΏΠ»Π°Π²Π΅Π½ синтаксис Π·Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ:


template <class ... Ts>
struct any_of : private std::tuple<Ts ...> { 
// полСнимся ΠΈ унаслСдуСм конструкторы ΠΎΡ‚ tuple 
        using std::tuple<Ts ...>::tuple;
        template <typename T>
        bool operator ==(const T& t) const {
                return std::apply(
                        [&t](const auto& ... ts) {
                                return ((ts == t) || ...);
                        },
                        static_cast<const std::tuple<Ts ...>&>(*this));
        }
};

template <class ... Ts>
any_of(Ts ...) -> any_of<Ts ... >;
 
assert(any_of(IDLE, DISCONNECTING, DISCONNECTED) == state);

Π’ Ρ‚ΠΎΠ·ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ€ΡŠΠΊΠΎΠ²ΠΎΠ΄ΡΡ‚Π²ΠΎΡ‚ΠΎ Π·Π° дСдукция слуТи Π·Π° ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π½Π΅ Π½Π° ΠΆΠ΅Π»Π°Π½ΠΈΡ‚Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ Π½Π° шаблона Π½Π° структурата Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€Π°, ΠΊΠΎΠΉΡ‚ΠΎ Π·Π½Π°Π΅ Ρ‚ΠΈΠΏΠΎΠ²Π΅Ρ‚Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΈ Π½Π° конструктора. 

По-Π½Π°Ρ‚Π°Ρ‚ΡŠΠΊ - ΠΏΠΎ-интСрСсно. Π‘ΡŒΠΎΡ€Π½ ΡƒΡ‡ΠΈ ΠΊΠ°ΠΊ Π΄Π° ΠΎΠ±ΠΎΠ±Ρ‰ΠΈΠΌ получСния ΠΊΠΎΠ΄ Π·Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΈ Π·Π° сравнСниС извън == ΠΈ слСд Ρ‚ΠΎΠ²Π° Π·Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»Π½ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ. По ΠΏΡŠΡ‚Ρ сС обясняват Ρ‚Π°ΠΊΠΈΠ²Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΊΠ°Ρ‚ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ no_unique_address (C++20) ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ Π½Π° шаблона Π² Π»Π°ΠΌΠ±Π΄Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (C++20) с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΈ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅. (Π”Π°, сСга ΡΠΈΠ½Ρ‚Π°ΠΊΡΠΈΡΡŠΡ‚ Π½Π° Π»Π°ΠΌΠ±Π΄Π° Π΅ ΠΎΡ‰Π΅ ΠΏΠΎ-лСсСн Π·Π° запомнянС - Ρ‚ΠΎΠ²Π° са Ρ‡Π΅Ρ‚ΠΈΡ€ΠΈ послСдоватСлни Π΄Π²ΠΎΠΉΠΊΠΈ скоби ΠΎΡ‚ всякакъв Π²ΠΈΠ΄.) ΠžΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»Π½ΠΎΡ‚ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‰ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΊΠ°Ρ‚ΠΎ Π΄Π΅Ρ‚Π°ΠΉΠ»ΠΈ Π½Π° конструктора, наистина стопля Π΄ΡƒΡˆΠ°Ρ‚Π° ΠΌΠΈ, Π΄Π° Π½Π΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ Π·Π° ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ° Π½Π° ΠΈΠ·Ρ€Π°Π·Π° Π² Π½Π°ΠΉ-Π΄ΠΎΠ±Ρ€ΠΈΡ‚Π΅ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΈ Π½Π° Π»Π°ΠΌΠ±Π΄Π° смятанС.

Накрая Π½Π΅ забравяйтС Π΄Π° Π³ΠΎ ΠΈΠ·Π»ΡŠΡΠΊΠ°Ρ‚Π΅:

  • НС забравяйтС, Ρ‡Π΅ lambdas са constexpr Π±Π΅Π·ΠΏΠ»Π°Ρ‚Π½ΠΎ; 
  • НСка Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΠΏΠ΅Ρ€Ρ„Π΅ΠΊΡ‚Π½ΠΎ ΠΏΡ€Π΅ΠΏΡ€Π°Ρ‰Π°Π½Π΅ ΠΈ Π΄Π° Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ нСговия Π³Ρ€ΠΎΠ·Π΅Π½ синтаксис във Π²Ρ€ΡŠΠ·ΠΊΠ° с ΠΏΠ°ΠΊΠ΅Ρ‚Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ Π² Π»Π°ΠΌΠ±Π΄Π° затварянСто;
  • НСка Π΄Π° Π΄Π°Π΄Π΅ΠΌ Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€Π° ΠΏΠΎΠ²Π΅Ρ‡Π΅ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈ Π·Π° ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ с условно noexcept; 
  • НСка сС ΠΏΠΎΠ³Ρ€ΠΈΠΆΠΈΠΌ Π·Π° ΠΏΠΎ-Ρ€Π°Π·Π±ΠΈΡ€Π°Π΅ΠΌ ΠΈΠ·Ρ…ΠΎΠ΄ Π·Π° Π³Ρ€Π΅ΡˆΠΊΠΈ Π² ΡˆΠ°Π±Π»ΠΎΠ½ΠΈΡ‚Π΅, Π±Π»Π°Π³ΠΎΠ΄Π°Ρ€Π΅Π½ΠΈΠ΅ Π½Π° ΠΈΠ·Ρ€ΠΈΡ‡Π½ΠΈΡ‚Π΅ Π²ΡŠΡ€Π½Π°Ρ‚ΠΈ стойности Π½Π° Π»Π°ΠΌΠ±Π΄Π°. Π’ΠΎΠ²Π° Ρ‰Π΅ ΠΏΡ€ΠΈΠ½ΡƒΠ΄ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€Π° Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈ ΠΏΠΎΠ²Π΅Ρ‡Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ, ΠΏΡ€Π΅Π΄ΠΈ функцията Π½Π° шаблона Π΄Π° бъдС дСйствитСлно ΠΈΠ·Π²ΠΈΠΊΠ°Π½Π° - Π½Π° Π΅Ρ‚Π°ΠΏΠ° Π½Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° Ρ‚ΠΈΠΏΠ°. 

Π—Π° подробности Π²ΠΈΠΆΡ‚Π΅ Π»Π΅ΠΊΡ†ΠΈΠΎΠ½Π½ΠΈΡ‚Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΈ: 

ΠΠ°ΡˆΠΈΡ‚Π΅ впСчатлСния

ΠŸΡŠΡ€Π²ΠΎΡ‚ΠΎ Π½ΠΈ участиС Π² C++ Russia бСшС запомнящо сС със своята интСнзивност. ΠžΡΡ‚Π°Π½Π°Ρ… с Π²ΠΏΠ΅Ρ‡Π°Ρ‚Π»Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π·Π° C++ Russia ΠΊΠ°Ρ‚ΠΎ искрСно ΡΡŠΠ±ΠΈΡ‚ΠΈΠ΅, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ Π³Ρ€Π°Π½ΠΈΡ†Π°Ρ‚Π° ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΈ ΠΎΠ±Ρ‰ΡƒΠ²Π°Π½Π΅ Π½Π° ΠΆΠΈΠ²ΠΎ Π΅ ΠΏΠΎΡ‡Ρ‚ΠΈ Π½Π΅Π·Π°Π±Π΅Π»Π΅ΠΆΠΈΠΌΠ°. Всичко, ΠΎΡ‚ настроСниСто Π½Π° Π»Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡ‚Π΅ Π΄ΠΎ ΡΡŠΡΡ‚Π΅Π·Π°Π½ΠΈΡΡ‚Π° ΠΎΡ‚ ΠΏΠ°Ρ€Ρ‚Π½ΡŒΠΎΡ€ΠΈΡ‚Π΅ Π½Π° ΡΡŠΠ±ΠΈΡ‚ΠΈΠ΅Ρ‚ΠΎ, ΠΏΡ€Π΅Π΄Ρ€Π°Π·ΠΏΠΎΠ»Π°Π³Π° към Ρ€Π°Π·Π³ΠΎΡ€Π΅Ρ‰Π΅Π½ΠΈ дискусии. Π‘ΡŠΠ΄ΡŠΡ€ΠΆΠ°Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° конфСрСнцията, ΡΡŠΡΡ‚ΠΎΡΡ‰ΠΎ сС ΠΎΡ‚ Π΄ΠΎΠΊΠ»Π°Π΄ΠΈ, ΠΎΠ±Ρ…Π²Π°Ρ‰Π° доста ΡˆΠΈΡ€ΠΎΠΊ ΡΠΏΠ΅ΠΊΡ‚ΡŠΡ€ ΠΎΡ‚ Ρ‚Π΅ΠΌΠΈ, Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ ΠΈΠ½ΠΎΠ²Π°Ρ†ΠΈΠΈ Π² C++, казуси Π½Π° Π³ΠΎΠ»Π΅ΠΌΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ ΠΈ идСологичСски Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½ΠΈ ΡΡŠΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΡ. Но Π±ΠΈ Π±ΠΈΠ»ΠΎ нСсправСдливо Π΄Π° ΠΏΡ€Π΅Π½Π΅Π±Ρ€Π΅Π³Π½Π΅ΠΌ социалния ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Π½Π° ΡΡŠΠ±ΠΈΡ‚ΠΈΠ΅Ρ‚ΠΎ, ΠΊΠΎΠΉΡ‚ΠΎ ΠΏΠΎΠΌΠ°Π³Π° Π·Π° прСодоляванС Π½Π° Π΅Π·ΠΈΠΊΠΎΠ²ΠΈΡ‚Π΅ Π±Π°Ρ€ΠΈΠ΅Ρ€ΠΈ Π½Π΅ само ΠΏΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ Π½Π° C++.

Π‘Π»Π°Π³ΠΎΠ΄Π°Ρ€ΠΈΠΌ Π½Π° ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΈΡ‚Π΅ Π½Π° конфСрСнцията Π·Π° Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚Ρ‚Π° Π΄Π° участвамС Π² ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ ΡΡŠΠ±ΠΈΡ‚ΠΈΠ΅!
МоТС Π±ΠΈ стС Π²ΠΈΠ΄Π΅Π»ΠΈ публикацията Π½Π° ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΈΡ‚Π΅ Π·Π° ΠΌΠΈΠ½Π°Π»ΠΎΡ‚ΠΎ, настоящСто ΠΈ Π±ΡŠΠ΄Π΅Ρ‰Π΅Ρ‚ΠΎ Π½Π° C++ Russia Π² Π±Π»ΠΎΠ³Π° JUG Ru.

Π‘Π»Π°Π³ΠΎΠ΄Π°Ρ€ΠΈΠΌ Π²ΠΈ, Ρ‡Π΅ ΠΏΡ€ΠΎΡ‡Π΅Ρ‚ΠΎΡ…Ρ‚Π΅ ΠΈ сС надявамС, Ρ‡Π΅ Π½Π°ΡˆΠΈΡΡ‚ ΠΏΡ€Π΅Ρ€Π°Π·ΠΊΠ°Π· Π½Π° ΡΡŠΠ±ΠΈΡ‚ΠΈΡΡ‚Π° Π΅ Π±ΠΈΠ» ΠΏΠΎΠ»Π΅Π·Π΅Π½!

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: www.habr.com

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€