CPLUSPLUC Telegram 1189
πŸ†• Анонс: Proxy 4 β€” Π½ΠΎΠ²Ρ‹ΠΉ шаг Π² C++-ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌΠ΅

🟒 Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Proxy 4?
Proxy β€” это header-only, кроссплатформСнная Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° C++20, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π±Π΅Π· наслСдования ΠΈ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹Ρ… Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.
Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ Π±Π°Π·Π΅ Windows с 2022 Π³ΠΎΠ΄Π° ΠΈ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΊΠ°ΠΊ зрСлая, готовая ΠΊ ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½Ρƒ тСхнология.

**Π§Ρ‚ΠΎ Π½ΠΎΠ²ΠΎΠ³ΠΎ Π² вСрсии 4?**
- Навыки (Skills): простоС ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ возмоТностСй (format, fmt_format, rtti, as_view, slim ΠΈ Π΄Ρ€.) Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ фасадов.
- proxy_view ΠΈ weak_proxy: ΡƒΠ΄ΠΎΠ±Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ для Π½Π΅Ρ„Π»Π°ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… ΠΈ слабых ссылок.
- БовмСстноС Π²Π»Π°Π΄Π΅Π½ΠΈΠ΅: Π½ΠΎΠ²Ρ‹Π΅ API make_proxy_shared ΠΈ allocate_proxy_shared ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ эффСктивноС Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ Π²Π»Π°Π΄Π΅Π½ΠΈΠ΅ Π±Π΅Π· overhead std::shared_ptr.
- Π£ΠΌΠ½Ρ‹ΠΉ диспСтчинг ΠΈ конвСрсии: возмоТности weak_dispatch, explicit_conversion_dispatch, ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½Π½Ρ‹Π΅ сообщСния ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ…, понятныС ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ‚Ρ‹ proxiable_target, inplace_proxiable_target.
- РСкурсивныС фасады: facade_aware_overload_t позволяСт ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ рСкурсивныС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π°Ρ€ΠΈΡ„ΠΌΠ΅Ρ‚ΠΈΠΊΡƒ, ΠΊΠΎΠ½ΠΊΠ°Ρ‚Π΅Π½Π°Ρ†ΠΈΡŽ) Π±Π΅Π· ΠΏΡ€Π΅ΠΆΠ΄Π΅Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ инстанциации.

ДокумСнтация Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½Π° Π½Π° ΠΎΠ±Π½ΠΎΠ²Π»Ρ‘Π½Π½ΠΎΠΌ сайтС β€” удобная навигация, FAQ, API-справочник, ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹.
Π’Π°ΠΊΠΆΠ΅ доступСн ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ запуск Π² Compiler Explorer: ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ Proxy прямо Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅ Π±Π΅Π· настройки срСды.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ это Π²Π°ΠΆΠ½ΠΎ?
- ΠŸΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ Π±Π΅Π· наслСдования ΠΈ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΎΠΊ: ΠΌΠ΅Π½Π΅Π΅ навязчиво, Π³ΠΈΠ±Ρ‡Π΅ ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Π΅Π΅.
- Π­Ρ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ΅ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ ΠΆΠΈΠ·Π½ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²: ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° владСния, заимствования ΠΈ слабых ссылок.
- Высокая ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ сравнима ΠΈΠ»ΠΈ прСвосходит Ρ€ΡƒΡ‡Π½ΠΎΠΉ ΠΊΠΎΠ΄.
- Π Π°ΡΡˆΠΈΡ€ΡΠ΅ΠΌΠΎΡΡ‚ΡŒ ΠΈ Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ: ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ ΠΏΠΎΠ²Π΅Ρ€Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ², конвСрсий ΠΈ Π΄Π°ΠΆΠ΅ кастомных абстракций.

Π§Ρ‚ΠΎ говорят Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ (reddit-ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ):
> β€œProxy library is like std::any … but adds runtime polymorphism without needing inheritance.”
> β€” TheFreestyler83

> β€œIt's like doing &something as &dyn Display in Rust… you can do type erasure like virtual interfaces, but without editing types.”
> β€” qalmakka

> β€œThey claim it's both easier and faster, but … ownership seems very unclear …”
> β€” Bart_V

РСзюмС
- Proxy 4 β€” Π½ΠΎΠ²Ρ‹ΠΉ стандарт для ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌΠ° Π² C++.
- Богатая ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Π°Ρ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° β€” Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ Π½Π°Π²Ρ‹ΠΊΠΎΠ² Ρ‡Π΅Ρ€Π΅Π· фасады.
- Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹: докумСнтация, ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Π² Compiler Explorer, Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ C++20 возмоТности.
- ΠŸΡ€ΠΈΠ·Π½Π°Π½ΠΈΠ΅ ΠΎΡ‚ сообщСства ΠΈ мноТСство способов примСнСния, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ заимствованиС ΠΈΠ΄Π΅ΠΉ ΠΈΠ· Rust.

🟠 Автор: Mingxin Wang, ΡΡ‚Π°Ρ€ΡˆΠΈΠΉ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ Microsoft: devblogs.microsoft.com/cppblog/announcing-proxy-4-the-next-leap-in-c-polymorphism

@cpluspluc
Please open Telegram to view this post
VIEW IN TELEGRAM
❀6πŸ‘5πŸ”₯3



tgoop.com/cpluspluc/1189
Create:
Last Update:

πŸ†• Анонс: Proxy 4 β€” Π½ΠΎΠ²Ρ‹ΠΉ шаг Π² C++-ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌΠ΅

🟒 Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Proxy 4?
Proxy β€” это header-only, кроссплатформСнная Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° C++20, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π±Π΅Π· наслСдования ΠΈ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹Ρ… Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.
Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ Π±Π°Π·Π΅ Windows с 2022 Π³ΠΎΠ΄Π° ΠΈ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΊΠ°ΠΊ зрСлая, готовая ΠΊ ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½Ρƒ тСхнология.

**Π§Ρ‚ΠΎ Π½ΠΎΠ²ΠΎΠ³ΠΎ Π² вСрсии 4?**
- Навыки (Skills): простоС ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ возмоТностСй (format, fmt_format, rtti, as_view, slim ΠΈ Π΄Ρ€.) Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ фасадов.
- proxy_view ΠΈ weak_proxy: ΡƒΠ΄ΠΎΠ±Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ для Π½Π΅Ρ„Π»Π°ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… ΠΈ слабых ссылок.
- БовмСстноС Π²Π»Π°Π΄Π΅Π½ΠΈΠ΅: Π½ΠΎΠ²Ρ‹Π΅ API make_proxy_shared ΠΈ allocate_proxy_shared ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ эффСктивноС Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ Π²Π»Π°Π΄Π΅Π½ΠΈΠ΅ Π±Π΅Π· overhead std::shared_ptr.
- Π£ΠΌΠ½Ρ‹ΠΉ диспСтчинг ΠΈ конвСрсии: возмоТности weak_dispatch, explicit_conversion_dispatch, ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½Π½Ρ‹Π΅ сообщСния ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ…, понятныС ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ‚Ρ‹ proxiable_target, inplace_proxiable_target.
- РСкурсивныС фасады: facade_aware_overload_t позволяСт ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ рСкурсивныС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π°Ρ€ΠΈΡ„ΠΌΠ΅Ρ‚ΠΈΠΊΡƒ, ΠΊΠΎΠ½ΠΊΠ°Ρ‚Π΅Π½Π°Ρ†ΠΈΡŽ) Π±Π΅Π· ΠΏΡ€Π΅ΠΆΠ΄Π΅Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ инстанциации.

ДокумСнтация Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½Π° Π½Π° ΠΎΠ±Π½ΠΎΠ²Π»Ρ‘Π½Π½ΠΎΠΌ сайтС β€” удобная навигация, FAQ, API-справочник, ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹.
Π’Π°ΠΊΠΆΠ΅ доступСн ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ запуск Π² Compiler Explorer: ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ Proxy прямо Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅ Π±Π΅Π· настройки срСды.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ это Π²Π°ΠΆΠ½ΠΎ?
- ΠŸΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ Π±Π΅Π· наслСдования ΠΈ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΎΠΊ: ΠΌΠ΅Π½Π΅Π΅ навязчиво, Π³ΠΈΠ±Ρ‡Π΅ ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Π΅Π΅.
- Π­Ρ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ΅ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ ΠΆΠΈΠ·Π½ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²: ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° владСния, заимствования ΠΈ слабых ссылок.
- Высокая ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ сравнима ΠΈΠ»ΠΈ прСвосходит Ρ€ΡƒΡ‡Π½ΠΎΠΉ ΠΊΠΎΠ΄.
- Π Π°ΡΡˆΠΈΡ€ΡΠ΅ΠΌΠΎΡΡ‚ΡŒ ΠΈ Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ: ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ ΠΏΠΎΠ²Π΅Ρ€Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ², конвСрсий ΠΈ Π΄Π°ΠΆΠ΅ кастомных абстракций.

Π§Ρ‚ΠΎ говорят Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ (reddit-ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ):
> β€œProxy library is like std::any … but adds runtime polymorphism without needing inheritance.”
> β€” TheFreestyler83

> β€œIt's like doing &something as &dyn Display in Rust… you can do type erasure like virtual interfaces, but without editing types.”
> β€” qalmakka

> β€œThey claim it's both easier and faster, but … ownership seems very unclear …”
> β€” Bart_V

РСзюмС
- Proxy 4 β€” Π½ΠΎΠ²Ρ‹ΠΉ стандарт для ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌΠ° Π² C++.
- Богатая ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Π°Ρ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° β€” Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ Π½Π°Π²Ρ‹ΠΊΠΎΠ² Ρ‡Π΅Ρ€Π΅Π· фасады.
- Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹: докумСнтация, ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Π² Compiler Explorer, Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ C++20 возмоТности.
- ΠŸΡ€ΠΈΠ·Π½Π°Π½ΠΈΠ΅ ΠΎΡ‚ сообщСства ΠΈ мноТСство способов примСнСния, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ заимствованиС ΠΈΠ΄Π΅ΠΉ ΠΈΠ· Rust.

🟠 Автор: Mingxin Wang, ΡΡ‚Π°Ρ€ΡˆΠΈΠΉ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ Microsoft: devblogs.microsoft.com/cppblog/announcing-proxy-4-the-next-leap-in-c-polymorphism

@cpluspluc

BY C++ Academy








Share with your friend now:
tgoop.com/cpluspluc/1189

View MORE
Open in Telegram


Telegram News

Date: |

Select: Settings – Manage Channel – Administrators – Add administrator. From your list of subscribers, select the correct user. A new window will appear on the screen. Check the rights you’re willing to give to your administrator. Done! Now you’re the proud owner of a Telegram channel. The next step is to set up and customize your channel. More>> The Standard Channel Joined by Telegram's representative in Brazil, Alan Campos, Perekopsky noted the platform was unable to cater to some of the TSE requests due to the company's operational setup. But Perekopsky added that these requests could be studied for future implementation.
from us


Telegram C++ Academy
FROM American