en
Feedback
C++ Moscow

C++ Moscow

Open in Telegram

Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ ΠΊΠ°Π½Π°Π» московского сообщСства программистов Π½Π° C++ Π§Π°Ρ‚: @cppmoscow_chat Π‘ΠΎΡ‚ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ связи: @cppmoscow_bot ΠžΡ€Π³Π°Π½ΠΈΠ·Π°Ρ‚ΠΎΡ€: @eoanermine

Show more
302
Subscribers
No data24 hours
No data7 days
No data30 days
Posts Archive
#proposals #resources Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡΡΡŒ ΠΊ интСрСсным новостям: Π½Π΅Π΄Π°Π²Π½ΠΎ ΠΊΠΎΠΌΠΈΡ‚Π΅Ρ‚ ΠΏΠΎ стандартизации C++ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π» ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ Π·Π° послСдний мСсяц ΠΏΡ€ΠΎΠΏΠΎΠ·Π°Π»Ρ‹. Из Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ: 1. ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π°Π΄ std::hive: Π±Ρ‹Π» ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ Ρ€Π°Π·Π΄Π΅Π», ΠΊΠ°ΡΠ°ΡŽΡ‰ΠΈΠΉΡΡ constexpr; внСсСно мноТСство ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² описаниС асимптотичСской слоТности ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ. 2. Π‘ ΡƒΡ‡Ρ‘Ρ‚ΠΎΠΌ всСх Π·Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠΉ LEWG Π±Ρ‹Π» ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ P0876 fiber_context - fibers without scheduler, ΠΏΡ€ΠΎΠΊΠ»Π°Π΄Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ Π±ΠΎΠ»Π΅Π΅ ΡˆΠΈΡ€ΠΎΠΊΠΈΠΉ ΠΏΡƒΡ‚ΡŒ Π² нашС свСтлоС ΠΊΠΎΡ€ΡƒΡ‚ΠΈΠ½Π½ΠΎΠ΅ Π±ΡƒΠ΄ΡƒΡ‰Π΅Π΅: Π² частности, ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽΡ‰ΠΈΠΉ Π±Π°Π·ΠΎΠ²Ρ‹Π΅ абстракции для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ stackful ΠΊΠΎΡ€ΡƒΡ‚ΠΈΠ½. 3. Π’ΠΈΠΊΡ‚ΠΎΡ€ Π—Π²Π΅Ρ€ΠΎΠ²ΠΈΡ‡, извСстный ΠΏΡ€ΠΎΠ΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ΠΌ std::format Π² стандарт, всё Π½Π΅ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΏΠΎΠΊΠΎΠΉ, ΠΈ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹Π΅ бСзопасныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΡ‰ΡƒΡŽΡ‰ΠΈΠ΅ всС прСлСсти constexpr, Π½ΠΎ для Ρ€Π°Π·Π±ΠΎΡ€Π° строк: if (auto result = std::scan<std::string, int>("answer = 42", "{} = {}")) { const auto& [key, value] = result->values(); // key == "answer", value == 42 } И дальшС, Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΌ, Π½ΠΎ Π΄Π°Π»Π΅ΠΊΠΎ Π½Π΅ ΠΈΡΡ‡Π΅Ρ€ΠΏΡ‹Π²Π°ΡŽΡ‰ΠΈΠΌ списком: Contracts for C++ (ставящий Π²Ρ‹ΡΠΎΠΊΡƒΡŽ Ρ†Π΅Π»ΡŒ Π½Π°ΠΊΠΎΠ½Π΅Ρ†-Ρ‚ΠΎ ввСсти Π² язык Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚ΠΎΠ²); A New Approach For Compiling C++ (Π·Π°Ρ…Π²Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ Π΄ΡƒΡ… Π±Π΅Π½Ρ‡ΠΌΠ°Ρ€ΠΊΠ°ΠΌΠΈ, показавшими ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ скорости компиляции Π½Π° 25–40%); optional<T&> (Π½Π°ΠΌΠ΅Ρ€Π΅Π½Π½ΠΎΠ΅ Π·Π°Π΄Π΅Π»Π°Ρ‚ΡŒ Ρ€Π°Π½Π΅Π΅ Π½Π°ΠΌΠ΅Ρ€Π΅Π½Π½ΠΎ ΠΎΡΡ‚Π°Π²Π»Π΅Π½Π½ΡƒΡŽ Π±Ρ€Π΅ΡˆΡŒ), Reflection for C++26 (ΡƒΠΏΡ€ΠΎΡ‰Π°ΡŽΡ‰ΠΈΠΉ Ρ€Π΅Ρ„Π»Π΅ΠΊΡΠΈΡŽ максимально, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρƒ Π½Π΅Π΅ Π±Ρ‹Π» шанс ΠΏΡ€ΠΎΠΉΡ‚ΠΈ Π² C++26), Low-Level Integer Arithmetic (ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽΡ‰ΠΈΠΉ Π½Π΅ Π²Π»Π΅ΠΊΡƒΡ‰ΠΈΠ΅ UB Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для выполнСния Π±Π°Π·ΠΎΠ²Ρ‹Ρ… арифмСтичСских ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ) ΠΈ UFCS (ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰ΠΈΠΉ Π΅Π΄ΠΈΠ½Ρ‹ΠΉ синтаксис Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ²) А ΠΊΠ°ΠΊΠΈΠ΅ ΠΈΠ· этих ΠΏΡ€ΠΎΠΏΠΎΠ·Π°Π»ΠΎΠ² каТутся Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ интСрСсными Π²Π°ΠΌ? Или ΠΊΠ°ΠΊΠΈΡ… ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… Ρ„ΠΈΡ‡, ΠΏΠΎ Π²Π°ΡˆΠ΅ΠΌΡƒ мнСнию, Π² этом спискС Π½Π΅ Ρ…Π²Π°Ρ‚Π°Π΅Ρ‚? ΠŸΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΡΠΉΡ‚Π΅ΡΡŒ ΠΊ ΠΎΠ±ΡΡƒΠΆΠ΄Π΅Π½ΠΈΡŽ Π² коммСнтариях!

#meetup β €ΠΠ°Ρˆ ΠΌΠΈΡ‚Π°ΠΏ состоится ΡƒΠΆΠ΅ Ρ‡Π΅Ρ€Π΅Π· 4 Π½Π΅Π΄Π΅Π»ΠΈ, 19 ноября (Вс) с 15:20 Π΄ΠΎ 18:00 ΠΏΠΎ адрСсу Москва, ΠœΠ°Π»Ρ‹ΠΉ Конюшковский ΠΏΠ΅Ρ€Π΅ΡƒΠ»ΠΎΠΊ, Π΄. 2 (ΠΎΡ„Ρ„Π»Π°ΠΉΠ½ + ΠΎΠ½Π»Π°ΠΉΠ½ трансляция Π΄ΠΎΠΊΠ»Π°Π΄ΠΎΠ²), ΠΈ ΠΌΡ‹ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ ΠΎΠ³Π»Π°ΡΠΈΡ‚ΡŒ список Π·Π°ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… активностСй: 1. Π”ΠΎΠΊΠ»Π°Π΄: ΠšΠΎΡ€ΡƒΡ‚ΠΈΠ½Ρ‹ ΠΈ Qt. Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° QCoro 2. Π”ΠΎΠΊΠ»Π°Π΄: ООП Π² ClickHouse 3. ΠšΠΎΠ½ΠΊΡƒΡ€Ρ ΠΏΠΎ ΠΌΠΎΡ‚ΠΈΠ²Π°ΠΌ C++ Quiz И, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, вас Π±ΡƒΠ΄ΡƒΡ‚ ΠΆΠ΄Π°Ρ‚ΡŒ вкусныС Π½Π°ΠΏΠΈΡ‚ΠΊΠΈ ΠΈ интСрСсноС ΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ πŸ˜‰ Если Π²Ρ‹ ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ ΠΏΠΎΡΠ΅Ρ‚ΠΈΡ‚ΡŒ мСроприятиС ΠΎΡ„Ρ„Π»Π°ΠΉΠ½, Ρ‚ΠΎ Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π½Π° Π½Π΅Π³ΠΎ ΠΏΠΎ ссылкС, ΠΈΠ½Π°Ρ‡Π΅ Π²Ρ‹ Π½Π΅ смоТСтС Π½Π° Π½Π΅Π³ΠΎ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ. ΠžΡΡ‚Π°Π»ΠΈΡΡŒ вопросы? ΠŸΠΈΡˆΠΈΡ‚Π΅ Π² ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ, Π½Π° всС ΠΎΡ‚Π²Π΅Ρ‚ΠΈΠΌ!

Finally! Π’ CMake (3.28+) Π½Π°ΠΊΠΎΠ½Π΅Ρ†-Ρ‚ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π»ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ! ΠšΡ€ΠΎΠΌΠ΅ новСйшСго CMake Π²Π°ΠΌ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΡ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ новСйшиС компиляторы: msvc 14.34+, clang 16+, gcc 14+ ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΏΠΎ ссылкС

ООП Π² ClickHouse ΠŸΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹ проСктирования. О Π½ΠΈΡ… всС ΡΠ»Ρ‹ΡˆΠ°Π»ΠΈ, ΠΈΡ… всС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ (надССмся). А Π΄Π°Π²Π°ΠΉΡ‚Π΅ посмотрим Π½Π° Π½ΠΈΡ… Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅? Как ΠΎΠ½ΠΈ ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ ΠΏΠΎΠ½ΠΈΠ·ΠΈΡ‚ΡŒ ΡΠ²ΡΠ·Π°Π½Π½ΠΎΡΡ‚ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ SOLID? Как ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ Π² Π½Π΅Π·Π½Π°ΠΊΠΎΠΌΠΎΠΌ ΠΊΠΎΠ΄Π΅? Π’ Π΄ΠΎΠΊΠ»Π°Π΄Π΅ ΠΌΡ‹ Ρ€Π°Π·Π±Π΅Ρ€Ρ‘ΠΌ использованиС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ΠΎΠ² Π½Π΅ Π² простом Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, Π° Π² Π‘Π£Π‘Π”. Π­Ρ‚ΠΎ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· самых извСстных C++ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ β€” ClickHouse

Π ΠΎΠ²Π½ΠΎ мСсяц остался Π΄ΠΎ нашСй встрСчи! И ΠΌΡ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ Π½Π΅ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΎΡΡ‚Π°Π²ΡˆΠΈΠΉΡΡ Π·Π°ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π΄ΠΎΠΊΠ»Π°Π΄:  Π”ΠΌΠΈΡ‚Ρ€ΠΈΠΉ КосСнко расскаТСт ΠΈ ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ‚, ΠΊΠ°ΠΊ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹ проСктирования ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ ΠΊΠΎΠ΄Π΅. На ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ClickHouse!

#digest ΠŸΠΎΠ΄Π±ΠΎΡ€ΠΊΠ° самых интСрСсных новостСй ΠΈ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΎΠ² ΠΈΠ· ΠΌΠΈΡ€Π° C++ Π·Π° послСдниС Π΄Π²Π΅ Π½Π΅Π΄Π΅Π»ΠΈ (2 октября – 15 октября 2023) Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΄Π°Π»Π΅Π΅ Π½Π° Π₯Π°Π±Ρ€Π΅

ΠšΠΎΡ€ΡƒΡ‚ΠΈΠ½Ρ‹ ΠΈ Qt. Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° QCoro Qt появился ΡƒΠΆΠ΅ ΠΏΠΎΡ‡Ρ‚ΠΈ 30 Π»Π΅Ρ‚ Π½Π°Π·Π°Π΄. Π₯отя Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ ΠΈ сСйчас поддСрТиваСтся ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΊΡ€ΡƒΠΏΠ½Ρ‹Π΅ обновлСния ΠΊΠ°ΠΊ ΠΎΡ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², Ρ‚Π°ΠΊ ΠΈ ΠΎΡ‚ ΠΊΠΎΠΌΡŒΡŽΠ½ΠΈΡ‚ΠΈ, Π΅Π³ΠΎ событийно-ориСнтированная систСма заставляСт нас ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Π΅Ρ€Π΅Π½ΠΈΡ†Ρ‹ ΠΊΠΎΠ»Π»Π±Π΅ΠΊΠΎΠ² ΠΈΠ»ΠΈ мноТСство Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… лямбд ΠΈ Π½Π° сСгодняшний дСнь выглядит достаточно Π³Ρ€ΠΎΠΌΠΎΠ·Π΄ΠΊΠΎ Π² сравнСнии с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ языками ΠΈ Π΄Π°ΠΆΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ C++ (ΠΏΡ€ΠΈΠ²Π΅Ρ‚, userver). Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° QCoro ΠΏΡ€ΠΈΠ·Π²Π°Π½Π° привнСсти возмоТности ΠΊΠΎΡ€ΡƒΡ‚ΠΈΠ½ Π² ΡΠΎΠ±Ρ‹Ρ‚ΠΈΠΉΠ½ΡƒΡŽ систСму Qt ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ΡŒ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ описания лишнСго ΠΊΠΎΠ΄Π°, ΠΎΠ΄Π½ΠΎΡ€Π°Π·ΠΎΠ²Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ Π»ΠΎΠ³ΠΈΠΊΠΈ пСрСкладывания Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π² ΠΌΠ΅Ρ‚ΠΎΠ΄. Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π½Π΅ Π»ΠΎΠΌΠ°Π΅Ρ‚ ΠΎΠ±Ρ€Π°Ρ‚Π½ΡƒΡŽ ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ. ВсС старыС классы, ΠΏΠΎ Ρ‚ΠΈΠΏΡƒ QNetworkManager, QFuture ΠΈΠ»ΠΈ классов IO-систСмы ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ совмСстимы с QCoro. Достаточно лишь Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ QObject::connect с ΠΊΠΎΠ»Π»Π±Π΅ΠΊΠΎΠΌ Π½Π° co_await ΠΈ ΡƒΠ·Ρ€Π΅Ρ‚ΡŒ магию. ΠŸΡ€ΠΈ этом Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π½Π°Π΄Ρ‘ΠΆΠ½Π° ΠΈ ΠΏΡ€ΠΈΠ·Π½Π°Π½Π° ΠΌΠΈΡ€ΠΎΠ²Ρ‹ΠΌ сообщСством. НапримСр, ΠΎΠ½Π° Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π² ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ (extra) для Manjaro Linux, Π° Π·Π½Π°Ρ‡ΠΈΡ‚, ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ нСсколько этапов ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΠΊ ΠΏΡ€Π΅ΠΆΠ΄Π΅, Ρ‡Π΅ΠΌ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² эти Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ.

Π§ΡƒΡ‚ΡŒ большС Ρ‡Π΅ΠΌ мСсяц остался Π΄ΠΎ нашСй встрСчи ΠΈ ΠΌΡ‹ Ρ€Π°Π΄Ρ‹ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒ вас с ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· Π·Π°ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Π΄ΠΎΠΊΠ»Π°Π΄ΠΎΠ²: Илья Быконя расскаТСт Π½Π°ΠΌ, ΠΊΠ°ΠΊ ΠΏΠΎΠ΄Ρ€ΡƒΠΆΠΈΡ‚ΡŒ Qt ΠΈ ΠΊΠΎΡ€ΡƒΡ‚ΠΈΠ½Ρ‹!

Π’ΠΎΡ‚ ΠΈ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΠ»Π°ΡΡŒ нСдСля ΠΊΠΎΡ€ΡƒΡ‚ΠΈΠ½. НадССмся, наши ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ оказались Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ интСрСсны, Π½ΠΎ ΠΈ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹! И, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ это Π±Ρ‹Π»ΠΈ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ посты Π² ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΠΎΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ «НСдСля XΒ», ΠΌΡ‹ ΠΏΡ€ΠΈΠ³Π»Π°ΡˆΠ°Π΅ΠΌ всСх ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ Π² коммСнтариях своим ΠΌΠ½Π΅Π½ΠΈΠ΅ΠΌ: понравился Π»ΠΈ Π²Π°ΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚, ΠΊΠ°ΠΊ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ ΠΈ ΠΊΠ°ΠΊΡƒΡŽ нСдСлю Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΏΠΎΡΠ»Π΅ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ? ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΌΡ‹ Ρ€Π°Π΄Ρ‹ Π½Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ сСгодня послСдний дСнь ΠΏΡ€ΠΈΡ‘ΠΌΠ° заявок ΠΆΠ΅Π»Π°ΡŽΡ‰ΠΈΡ… Π²Ρ‹ΡΡ‚ΡƒΠΏΠΈΡ‚ΡŒ с Π΄ΠΎΠΊΠ»Π°Π΄ΠΎΠΌ Π½Π° блиТайшСм ΠΌΠΈΡ‚Π°ΠΏΠ΅! А Π·Π½Π°Ρ‡ΠΈΡ‚, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ нСдСля Π±ΡƒΠ΄Π΅Ρ‚ Π½Π΅Π΄Π΅Π»Π΅ΠΉ анонсов Π΄ΠΎΠΊΠ»Π°Π΄ΠΎΠ² C++ Moscow β„–2!

#cpp20 #coroutines ⁠Если Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ ΠΎΠ± инфраструктурС ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ΅ ΠΊΠΎΡ€ΡƒΡ‚ΠΈΠ½ Π² компиляторах, Ρ‚ΠΎ, ΠΊ соТалСнию, C++20 Π½Π΅ принСс ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ высокоуровнСвой Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½ΠΎΠΉ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ; всС, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΈΠΌΠ΅Π΅ΠΌ: coroutine_traits, coroutine_handle. И это, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, прСкрасно: ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π½ΠΈΡ… ΠΏΠΈΡΠ°Ρ‚ΡŒ свои сопрограммы. Однако Π½Π΅ всСм Π² ΡƒΠ΄ΠΎΠ²ΠΎΠ»ΡŒΡΡ‚Π²ΠΈΠ΅ ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹ΠΉ ΠΊΠΎΠ΄, Ρ…ΠΎΡ‚Π΅Π»ΠΎΡΡŒ Π±Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ для ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½ΠΎΠ³ΠΎ использования ΠΈ Π³ΠΎΡ‚ΠΎΠ²Π΅Π½ΡŒΠΊΠΎΠ΅. И ΠΊΠΎΠΌΠΈΡ‚Π΅Ρ‚ Π½Π΅ Π΄Ρ€Π΅ΠΌΠ»Π΅Ρ‚; Π² C++23 Π±Ρ‹Π» принят ΠΏΡ€ΠΎΠΏΠΎΠ·Π°Π» (Π½Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π΅Ρ‰Π΅ Π½ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ компиляторС): 1. πŸ‡¬πŸ‡§ std::generator: Synchronous Coroutine Generator for Ranges, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰ΠΈΠΉ ΠΊΠΎΡ€ΡƒΡ‚ΠΈΠ½Π½Ρ‹ΠΉ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€:
std::generator<int> iota(int start = 0) {
  while (true)
    co_yield start++;
}

void f() {
  for (auto i: iota() | std::views::take(3))
    std::cout << i << ' '; // ΠŸΠ΅Ρ‡Π°Ρ‚Π°Π΅Ρ‚ 0 1 2
}

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, прямо сСйчас Π² ΠΊΠΎΠΌΠΈΡ‚Π΅Ρ‚Π΅ рассматриваСтся: 1. πŸ‡¬πŸ‡§ std::lazy: Coroutine for Deferred Execution, ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽΡ‰ΠΈΠΉ довольно минималистичный класс для прСдставлСния асинхронных вычислСний:
lazy<int> coro() {
  int result = 0;
  while (int v = co_await async_read())
    result += v;
  co_return result;
}

void f() {
  lazy<int> task = coro(); // ΠŸΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΊΠΎΡ€ΡƒΡ‚ΠΈΠ½Ρ‹
  co_await task; // А Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π°ΠΊΠΎΠ½Π΅Ρ† Π΅Π΅ исполним
}

К соТалСнию, Π΄Π°Π»Π΅ΠΊΠΎ Π½Π΅ Ρ„Π°ΠΊΡ‚, ΠΏΡ€ΠΈΠΌΡƒΡ‚ Π»ΠΈ это ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² C++26: ΠΊΠ°ΠΊ ΠΎΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΏΠΎΠ΄Π°Π½ΠΎ Π² 2022-ΠΎΠΌ, Ρ‚Π°ΠΊ с Ρ‚Π΅Ρ… ΠΏΠΎΡ€ ΠΈ Π½Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ прогрСсса Π² ΠΏΡ€ΠΎΠ΄Π²ΠΈΠΆΠ΅Π½ΠΈΠΈΠΈ ΠΊ Π΅Π³ΠΎ ΠΏΡ€ΠΈΠ½ΡΡ‚ΠΈΡŽ. И Π½Π° этом всё. Π‘ΠΎΠ»ΡŒΡˆΠ΅ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ Π² стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ ΠΏΠΎΠΊΠ° Ρ‡Ρ‚ΠΎ Π½Π΅ прСдвидится. К ΡΡ‡Π°ΡΡ‚ΡŒΡŽ, ΡƒΠΆΠ΅ написано нСсколько Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… ΠΏΠΎΠΌΠΈΠΌΠΎ высокоуровнСвых ΠΊΠΎΡ€ΡƒΡ‚ΠΈΠ½Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²ΠΎΠ² срСдства для планирования (scheduling) Π·Π°Π΄Π°Ρ‡ ΠΈ Π½Π΅Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‰Π΅Π³ΠΎ I/O: 1. πŸ‡¬πŸ‡§ Facebook: Folly::Coro β€” Асинхронный ΠΊΠΎΡ€ΡƒΡ‚ΠΈΠ½Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ ΠΎΡ‚ Facebook, быстрый ΠΈ ΠΏΠΎΠΌΠΈΠΌΠΎ всСго ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ асинхронныС ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Ρ‹ синхронизации. 2. πŸ‡¬πŸ‡§ Lewis Baker: CppCoro β€” ΠŸΡ€Π°Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ всСх ΠΊΠΎΡ€ΡƒΡ‚ΠΈΠ½Π½Ρ‹Ρ… Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ². К соТалСнию, ΡƒΠΆΠ΅ ΠΌΠ΅Ρ€Ρ‚Π²Ρ‹ΠΉ, Π½ΠΎ Π²Π²ΠΈΠ΄Ρƒ своСй большой популярности ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΠ²ΡˆΠΈΠΉ Тизнь Ρ‡Π΅Ρ€Π΅Π· Ρ„ΠΎΡ€ΠΊΠΈ ΠΈ многочислСнных ΠΈΠ΄Π΅ΠΉΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚Π΅Π»Π΅ΠΉ: [1], [2], [3], [4], [5]. 3. πŸ‡¬πŸ‡§ Dan VrΓ‘til: QCoro β€” Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² Qt ΠΊΠΎΡ€ΡƒΡ‚ΠΈΠ½Ρ‹ вмСсто сигналов. А ΠΊΠ°ΠΊΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Π²Ρ‹? Или Π²Ρ‹ ΡƒΠΆΠ΅ успСли Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ всС ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ? πŸ˜‰

#cpp20 #coroutines НС Π±ΡƒΠ΄Π΅ΠΌ вас Ρ‚ΠΎΠΌΠΈΡ‚ΡŒ, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΈ Π΄ΠΎΠΊΠ»Π°Π΄Ρ‹ Ρ€Π°ΡΠΊΡ€Ρ‹Π²Π°ΡŽΡ‚ ΠΊΠΎΡ€ΡƒΡ‚ΠΈΠ½Ρ‹ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎ: 1. πŸ‡·πŸ‡Ί Habr: ΠšΠΎΡ€ΡƒΡ‚ΠΈΠ½Ρ‹ Π² C++20 β€” Ρ‡Ρ‚ΠΎ это ΠΈ ΠΊΠ°ΠΊ с Π½ΠΈΠΌΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ 2. πŸ‡·πŸ‡Ί Habr: C++20. Coroutines 3. πŸ‡¬πŸ‡§ David MaziΓ¨res: My tutorial and take on C++20 coroutines 4. πŸ‡¬πŸ‡§ Lewis Baker: Asymmetric Transfer Π’Ρ‹Π±ΠΈΡ€Π°ΠΉΡ‚Π΅ Π»ΡŽΠ±ΡƒΡŽ ΠΏΠΎ своим языковым прСдпочтСниям β€” Π½Π΅ ΠΎΡˆΠΈΠ±Π΅Ρ‚Π΅ΡΡŒ. Но ΠΊΠ°ΠΊ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈ Π²ΡΠ΅ΠΎΠ±ΡŠΠ΅ΠΌΠ»ΡŽΡ‰ΠΈΠΉ Ρ‚Ρ€ΡƒΠ΄ я Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ ΡΠ΅Ρ€ΠΈΡŽ статСй Assymetric Transfer (Lewis Baker). Π­Ρ‚ΠΎ Π»ΠΎΠ½Π³-Π»ΠΎΠ½Π³ Ρ€ΠΈΠ΄, Π½ΠΎ ΠΎΠ½ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ Ρ‚ΠΎΠ³ΠΎ стоит: тСорСтичСскиС основы ΠΊΠΎΡ€ΡƒΡ‚ΠΈΠ½; ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ ΠΈΡ… Ρ€Π°Π±ΠΎΡ‚Ρ‹: operator coawait, promisetype, симмСтричный пСрСнос; ΠΊΠ°ΠΊΠΈΠ΅ прСобразования Π½Π°Π΄ нашим ΠΊΠΎΡ€ΡƒΡ‚ΠΈΠ½Π½Ρ‹ΠΌ ΠΊΠΎΠ΄ΠΎΠΌ выполняСт компилятор β€” всС это раскрываСтся Π²ΠΎ всСх дСталях, ΠΈ вряд Π»ΠΈ послС Π΅Π³ΠΎ прочтСния Ρƒ вас останСтся Ρ…ΠΎΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ вопрос ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ сопрограммы. Если ΠΆΠ΅ Π²Ρ‹ большС ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°Π΅Ρ‚Π΅ Π²ΠΈΠ΄Π΅ΠΎ, Ρ‚ΠΎ Π½Π° Ρ‚Π΅ΠΌΡƒ ΠΊΠΎΡ€ΡƒΡ‚ΠΈΠ½ Π΅ΡΡ‚ΡŒ нСсколько Ρ…ΠΎΡ€ΠΎΡˆΠΈΡ… Π΄ΠΎΠΊΠ»Π°Π΄ΠΎΠ²: 1. πŸ‡¬πŸ‡§ Andreas Fertig: C++20’s Coroutines for Beginners β€” Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ ΠΊΠΎΡ€ΡƒΡ‚ΠΈΠ½Ρ‹ Π½Π° основС ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ²; 2. πŸ‡¬πŸ‡§ Andreas Weis: Deciphering C++ Coroutines - A Diagrammatic Coroutine Cheat Sheet β€” большС ΡƒΠ³Π»ΡƒΠ±Π»ΡΡŽΡ‰ΠΈΠΉΡΡ Π² Π°Π½Π°Ρ‚ΠΎΠΌΠΈΡŽ ΠΊΠΎΡ€ΡƒΡ‚ΠΈΠ½ ΠΈ проводящий связи ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΈΡ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ собой Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚. И Π΄Π²Π΅ прСкрасныС Π»Π΅ΠΊΡ†ΠΈΠΈ, Π΄Π΅Ρ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΈ с прСкрасной ΠΏΠΎΠ΄Π°Ρ‡Π΅ΠΉ: 1. πŸ‡·πŸ‡Ί ΠšΠΎΠ½ΡΡ‚Π°Π½Ρ‚ΠΈΠ½ Π’Π»Π°Π΄ΠΈΠΌΠΈΡ€ΠΎΠ²: Π‘ΠΎΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Ρ‡Π°ΡΡ‚ΡŒ 1 β€” ΠžΠ±Π·ΠΎΡ€ разновидностСй сопрограмм ΠΈ ΠΈΡ… основных частСй, Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹ΠΉ мноТСством интСрСсных ΡƒΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠΉ: собствСнный Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€, исслСдованиС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² оТидания ΠΈ Ρ€Π°Π·Π±ΠΎΡ€ Ρ‚ΠΎΠ½ΠΊΠΈΡ… ΠΈ слоТных ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ; 2. πŸ‡·πŸ‡Ί ΠšΠΎΠ½ΡΡ‚Π°Π½Ρ‚ΠΈΠ½ Π’Π»Π°Π΄ΠΈΠΌΠΈΡ€ΠΎΠ²: Π‘ΠΎΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Ρ‡Π°ΡΡ‚ΡŒ 2 β€” Π’Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ симмСтрии Π² ΠΊΠΎΡ€ΡƒΡ‚ΠΈΠ½Π°Ρ…, ΠΈΡ… ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π² ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹Ρ… Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚Π°Ρ…, многопоточности ΠΈ асинхронности. И это всС, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΎΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΎ, Π½ΠΎ ΠΊΠ°ΠΊ Π΄Π΅Π»Π° обстоят с инфраструктурой для ΠΊΠΎΡ€ΡƒΡ‚ΠΈΠ½: вСдь ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π½Π°ΠΌ хочСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π³ΠΎΡ‚ΠΎΠ²Ρ‹Π΅ классы generator, task ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅, Π° Π½Π΅ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΈΡ… ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΈ насколько Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΈΡ… ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ компиляторы? ΠŸΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎΠ± этом Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π°Π·!

#cpp20 #coroutines НачнСм ΠΆΠ΅ наш ΠΏΡƒΡ‚ΡŒ! ΠŸΠ΅Ρ€Π²Ρ‹Π΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ Π² нашСм мСню: 1. Habr: ΠšΠΎΡ€ΡƒΡ‚ΠΈΠ½Ρ‹ C++20 Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… 2. Habr: Готовимся ΠΊ Π‘++20. Coroutines TS Π½Π° Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ОбС ΠΎΠ½ΠΈ Π²Π²ΠΎΠ΄Π½Ρ‹Π΅, Π½ΠΎ Ссли пСрвая рассматриваСт ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ‚ΠΎ, ΠΊΠ°ΠΊ ΠΊΠΎΡ€ΡƒΡ‚ΠΈΠ½Ρ‹ (ΠΊΠ΅ΠΌ-Ρ‚ΠΎ Π·Π° нас написанныС) ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‚ΠΎ вторая ΡƒΠΆΠ΅ слСгка ΠΏΡ€ΠΈΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ завСсу: Ρ‡Ρ‚ΠΎ Ρƒ Π½ΠΈΡ… ΠΏΠΎΠ΄ ΠΊΠ°ΠΏΠΎΡ‚ΠΎΠΌ? Если эти ΡΡ‚Π°Ρ‚ΡŒΠΈ каТутся Π²Π°ΠΌ слишком Π»Π°ΠΉΡ‚ΠΎΠ²Ρ‹ΠΌΠΈ, ΠΎΡΡ‚Π°Π²Π°ΠΉΡ‚Π΅ΡΡŒ Π½Π° связи, Π²ΠΏΠ΅Ρ€Π΅Π΄ΠΈ нас ΠΆΠ΄Π΅Ρ‚ Ρ…Π°Ρ€Π΄ΠΊΠΎΡ€!

ΠšΠΎΡ€ΡƒΡ‚ΠΈΠ½Ρ‹ (сопрограммы) β€” ΠΎΠ΄Π½ΠΎ ΠΈΠ· Π½ΠΎΠ²ΠΎΠ²Π²Π΅Π΄Π΅Π½ΠΈΠΉ C++20, ΠΊΡ€Π°ΠΉΠ½Π΅Π³ΠΎ ΠΈΠ· Π½Π° Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π½Ρ‹Ρ… стандартов. Π₯ΠΎΡ‚ΡŒ статСй ΠΏΡ€ΠΎ
ΠšΠΎΡ€ΡƒΡ‚ΠΈΠ½Ρ‹ (сопрограммы) β€” ΠΎΠ΄Π½ΠΎ ΠΈΠ· Π½ΠΎΠ²ΠΎΠ²Π²Π΅Π΄Π΅Π½ΠΈΠΉ C++20, ΠΊΡ€Π°ΠΉΠ½Π΅Π³ΠΎ ΠΈΠ· Π½Π° Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π½Ρ‹Ρ… стандартов. Π₯ΠΎΡ‚ΡŒ статСй ΠΏΡ€ΠΎ Π½ΠΈΡ… написано ΡƒΠΆΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ, сами ΠΏΠΎ сСбС ΠΎΠ½ΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ достаточно слоТными для понимания ΠΈ осознания: вмСстС с Π½ΠΈΠΌΠΈ приходят сразу Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ Π½ΠΎΠ²Ρ‹Π΅ сущности (promise object, coroutine handle, coroutine state, awaitable), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ программист Π΄ΠΎΠ»ΠΆΠ΅Π½ постоянно Π΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π² ΡƒΠΌΠ΅. ΠœΠ½ΠΎΠΆΠ΅ΡΡ‚Π²ΠΎ статСй ΠΈ Π΄ΠΎΠΊΠ»Π°Π΄ΠΎΠ² Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ ΠΊΠΎΡ€ΡƒΡ‚ΠΈΠ½Ρ‹ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² (ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… ΠΏΠΈΡ‚ΠΎΠ½ΡΡ‡ΡŒΠΈΠΌ) β€” ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· самых элСмСнтарных ΠΈ распространСнных ΠΈΡ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ. Но Ρ‡Ρ‚ΠΎ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ, ΠΊΠΎΠ³Π΄Π° Π΄Π°ΠΆΠ΅ сам ΠΊΠΎΠΌΠΈΡ‚Π΅Ρ‚ ΠΏΠΎ стандартизации C++ Π½Π΅ смог Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ (Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ всС ΠΆΠ΅ Ρƒ Π½Π΅Π³ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ, вошло Π² C++23 ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ std::generator) Но Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ ΠΎ грустном. НСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΡ€ΡƒΡ‚ΠΈΠ½Ρ‹ тяТСло ΠΏΠΈΡΠ°Ρ‚ΡŒ, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΈΠΌΠΈ Π»Π΅Π³ΠΊΠΎ ΠΈ приятно! Π‘ΡƒΠ΄Π΅ΠΌ Ρ€Π°Π΄ΠΎΠ²Π°Ρ‚ΡŒΡΡ, вСдь всю эту нСдСлю ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Π΄Π΅Π»ΠΈΡ‚ΡŒΡΡ с Π²Π°ΠΌΠΈ ΡΡ‚Π°Ρ‚ΡŒΡΠΌΠΈ ΠΈ Π΄ΠΎΠΊΠ»Π°Π΄Π°ΠΌΠΈ, посвящСнными сопрограммам! РазбСрСмся Π² Π½ΠΈΡ…, Π²ΠΎ всСх дСталях, вмСстС

Вторая встрСча московского сообщСства программистов Π½Π° C++ ΠΏΡ€ΠΎΠΉΠ΄Π΅Ρ‚ 19 ноября (Вс) с 15:20 Π΄ΠΎ 18:00 ΠΏΠΎ адрСсу Москва, ΠœΠ°Π»Ρ‹ΠΉ Конюшковский ΠΏΠ΅Ρ€Π΅ΡƒΠ»ΠΎΠΊ, Π΄. 2 (ΠΎΡ„Ρ„Π»Π°ΠΉΠ½ + ΠΎΠ½Π»Π°ΠΉΠ½ трансляция Π΄ΠΎΠΊΠ»Π°Π΄ΠΎΠ²) ΠœΡ‹ ΠΏΡ€ΠΈΠ³Π»Π°ΡˆΠ°Π΅ΠΌ всСх ΠΏΡ€ΠΈΠ½ΡΡ‚ΡŒ Π² Π½Π΅ΠΉ участиС: ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ своим ΠΎΠΏΡ‹Ρ‚ΠΎΠΌ ΠΈ экспСртизой, просто Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΏΠΎΠΎΠ±Ρ‰Π°Ρ‚ΡŒΡΡ Π² ΠΊΡ€ΡƒΠ³Ρƒ Π΅Π΄ΠΈΠ½ΠΎΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΈΠΊΠΎΠ² ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Ρ€Π°Π΄Ρ‹ всСм ΠΆΠ΅Π»Π°ΡŽΡ‰ΠΈΠΌ Π²Ρ‹ΡΡ‚ΡƒΠΏΠΈΡ‚ΡŒ с ΠΌΠΈΠ½ΠΈ-Π΄ΠΎΠΊΠ»Π°Π΄ΠΎΠΌ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ Π΄ΠΎ Π΄Π²Π°Π΄Ρ†Π°Ρ‚ΠΈ ΠΌΠΈΠ½ΡƒΡ‚ Π½Π° Π»ΡŽΠ±ΡƒΡŽ Ρ‚Π΅ΠΌΡƒ, ΡΠ²ΡΠ·Π°Π½Π½ΡƒΡŽ с ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π½Π° C++ (заявки ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ΡΡ Π΄ΠΎ 15 октября Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ) Π‘Π²ΡΠΆΠΈΡ‚Π΅ΡΡŒ с Π½Π°ΠΌΠΈ, ΠΈ ΠΌΡ‹ ΠΏΠΎΠΌΠΎΠΆΠ΅ΠΌ Π²Π°ΠΌ Π½Π° всСх этапах: ΠΎΡ‚ ΠΏΠΎΠ΄Π±ΠΎΡ€Π° Ρ‚Π΅ΠΌΡ‹ для выступлСния (Ссли Π²Ρ‹ Π΅Ρ‰Ρ‘ с Π½Π΅ΠΉ Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ»ΠΈΡΡŒ) Π΄ΠΎ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠΈ красивой ΠΈ ясной ΠΏΡ€Π΅Π·Π΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Π—Π°Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ Π² Ρ‡Π°Ρ‚ ΠΏΠΎ ссылкС, Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΡƒΠΉΡ‚Π΅ΡΡŒ Π½Π° мСроприятиС (Ссли Π²Ρ‹ ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ ΠΏΠΎΡΠ΅Ρ‚ΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΎΡ‡Π½ΠΎ, Ρ‚ΠΎ рСгистрация ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Π°), ΠΈ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚Π΅ Π½Π° Π½Π°ΡˆΡƒ встрСчу, Π±ΡƒΠ΄Π΅Ρ‚ интСрСсно!

#digest ΠŸΠΎΠ΄Π±ΠΎΡ€ΠΊΠ° самых интСрСсных новостСй ΠΈ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΎΠ² ΠΈΠ· ΠΌΠΈΡ€Π° C++ Π·Π° послСдниС Π΄Π²Π΅ Π½Π΅Π΄Π΅Π»ΠΈ (18 сСнтября – 1 октября 2023) Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΄Π°Π»Π΅Π΅ Π½Π° Π₯Π°Π±Ρ€Π΅

#quiz #explanation Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚ гласит: [temp.fct.spec] Each function template specialization instantiated from a template has its own copy of any static variable. Π’ΠΎ Π΅ΡΡ‚ΡŒ, ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ инстанцированиС ΠΈΠΌΠ΅Π΅Ρ‚ свои ΠΊΠΎΠΏΠΈΠΈ статичСских ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. Π’ нашСм ΠΊΠΎΠ΄Π΅ имССтся Π΄Π²Π° инстанцирования: для T = int ΠΈ T = double. Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΈ Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ (Π½ΠΎ Π½Π΅ Π²Ρ‚ΠΎΡ€ΠΎΠΉ) Π²Ρ‹Π·ΠΎΠ² f Ρ€Π°Π·Π΄Π΅Π»ΡΡŽΡ‚ ΠΌΠ΅ΠΆΠ΄Ρƒ собой ΠΎΠ΄Π½Ρƒ ΡΡ‚Π°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ. ΠžΡ‚Π²Π΅Ρ‚: 112

Каким Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π²Ρ‹ΡˆΠ΅?
Anonymous voting

#quiz #code Каким Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½ΠΈΠΆΠ΅? Π”Π΅Π»ΠΈΡ‚Π΅ΡΡŒ своими мыслями Π² коммСнтариях! ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‚ ΠΈ Π΅Π³ΠΎ объяснСниС Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Ρ‹ Π² 18:00 ΠΏΠΎ МосквС. #include <iostream> using namespace std; template <class T> void f(T) { static int i = 0; cout << ++i; } int main() { f(1); f(1.0); f(1); }

Π Π°Π±ΠΎΡ‚Π° Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ ΠΈ ΡƒΡ‡Π΅Π±Π° ΡƒΡ‡Π΅Π±ΠΎΠΉ, Π½ΠΎ наши ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ‚ΠΎΡ€Ρ‹ Π½Π΅ Π΄Ρ€Π΅ΠΌΠ»ΡŽΡ‚ ΠΈ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ»Π°Π½Ρ‹ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΌΠΈΡ‚Π°ΠΏ.. А ΠΊΠ°ΠΊΠΈΠΌ Π±Ρ‹ Ρ…ΠΎΡ‚Π΅Π»ΠΈ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ Π΅Π³ΠΎ Π²Ρ‹? ΠŸΠΎΠ΄Π΅Π»ΠΈΡ‚Π΅ΡΡŒ своими мыслями Π² коммСнтариях!

#quiz #explanation Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚ гласит: [dcl.fct#8] The return type, the parameter-type-list, the ref-qualifier, the cv-qualifier-seq, and the exception specification, but not the default arguments, are part of the function type. Π’ΠΎ Π΅ΡΡ‚ΡŒ, ref-ΠΊΠ²Π°Π»ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ (Π² нашСм случаС const&& для X::f) ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‡Π°ΡΡ‚ΡŒΡŽ Ρ‚ΠΈΠΏΠ° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Ρ‚ΠΈΠΏ ptr это int(X::*)() const&&. ΠžΡ‚Π²Π΅Ρ‚: 00