✍️ Nicolai M. Josuttis

#C++23
#C++
🐘 همه قابلیتهای تازه C++23، با مثال و کاربرد عملی
🚀 این کتاب قابلیتهای جدید زبان و کتابخانه C++23 رو برای برنامهنویسانی بررسی میکنه که با نسخههای قبلی C++ آشنایی دارن. با انگیزه و زمینه هر قابلیت، نمونههای کاربردی و نکتههای ترکیب ویژگیها آشنا میشی تا بتونی از این نسخه در برنامهنویسی روزمره بهتر استفاده کنی.
✨ ویژگیهای کلیدی
🧩 قابلیتهای تازه زبان و کتابخانه C++23 رو همراه با انگیزه و زمینه شکلگیری هرکدوم یاد میگیری.
💻 مثالها و اطلاعات پسزمینه کمک میکنن تأثیر قابلیتها رو در برنامهنویسی روزمره بهتر درک کنی.
🔄 کتاب به بهبودها و گسترش قابلیتهای معرفیشده در C++20 و چند قابلیت جدید زبان و کتابخانه میپردازه.
⚠️ با دامهای پنهان و نکتههایی آشنا میشی که هنگام ترکیب قابلیتهای جدید ممکنه پیش بیان.
📘 توضیح کتاب
📚 C++23 مرحله بعدی در تکامل برنامهنویسی مدرن C++ محسوب میشه و در نسخههای جدید gcc، clang و Visual C++ پشتیبانی میشه. این نسخه پس از C++20 منتشر شده؛ نسخهای که با معرفی چند قابلیت مهم، آغاز چرخه جدید انتشار C++ به شمار میاد.
⚙️ C++23 هم گسترشهای مهم و بهبودهایی برای قابلیتهای معرفیشده در C++20 داره و هم چند قابلیت تازه در زبان و کتابخانه استاندارد اضافه میکنه. کتاب همه این قابلیتهای جدید رو پوشش میده و برای هرکدوم مثال و اطلاعات زمینهای ارائه میکنه.
🧠 توضیحات کتاب فقط به معرفی نحوه استفاده از قابلیتها محدود نمیشه؛ انگیزه و زمینه شکلگیری هر ویژگی رو هم روشن میکنه. این رویکرد کمک میکنه دلیل وجود قابلیتها رو پیش از دیدن کاربردشون بفهمی.
🔍 در ادامه، اثر قابلیتهای تازه بر برنامهنویسی روزمره و نتیجه ترکیب اونها بررسی میشه. چون همه ویژگیها بهتنهایی گویا نیستن، کتاب به قدرتی که از ترکیبشون به دست میاد و دامهای احتمالی هم توجه داره.
🎯 بعد از مطالعه، میتونی قابلیتهای C++23 رو در زمینه مناسب به کار بگیری، ترکیب ویژگیها رو بهتر ارزیابی کنی و با آگاهی بیشتری از امکانات زبان و کتابخانه جدید در برنامهنویسی روزمره استفاده کنی.
🎯 چیزهایی که یاد میگیری
🧩 با قابلیتهای تازه زبان و کتابخانه استاندارد در C++23 آشنا میشی.
📖 انگیزه و زمینه هر قابلیت رو درک میکنی و یاد میگیری چرا به زبان یا کتابخانه اضافه شده.
💻 تأثیر قابلیتهای تازه رو بر برنامهنویسی روزمره بررسی میکنی.
🔄 یاد میگیری قابلیتهای مختلف رو با هم ترکیب کنی و از امکاناتی که این ترکیب فراهم میکنه بهره ببری.
⚠️ دامها و نکتههای پنهانی رو که ممکنه هنگام استفاده و ترکیب قابلیتها پیش بیان، تشخیص میدی.
🛠️ با مثالها و اطلاعات زمینهای کتاب، استفاده عملی از قابلیتهای C++23 رو یاد میگیری.
👤 این کتاب برای چه کسانیه؟
👨💻 کتاب برای برنامهنویسانی مناسبه که با نسخههای قبلی C++ آشنایی دارن و میخوان قابلیتهای تازه زبان و کتابخانه رو یاد بگیرن. آشنایی با C++20 و نسخههای پیش از اون پیشنیاز ضمنی کتابه؛ متن منبع پیشنیاز دیگری مشخص نمیکنه.
📚 اگر در کار با C++ به دنبال مرجعی برای فهم تغییرات نسخه ۲۳، کاربردهای روزمره و ترکیب قابلیتهای جدید هستی، این کتاب میتونه برای یادگیری و مراجعه به نکتههای تخصصی به کارت بیاد.
📖 فهرست مطالب
فصل ۱. «Hello, World» با C++23
فصل ۲. ماژولهای std و std.compat
فصل ۳. خروجی قالببندیشده با std::print() و std::println()
فصل ۴. گسترشهای خروجی قالببندیشده
فصل ۵. اصلاح حلقه for مبتنی بر Range
فصل ۶. گسترشهای Operatorها
فصل ۷. استنتاج this بهعنوان پارامتر شیء صریح
فصل ۸. auto() و auto{}
فصل ۹. std::expected<>
فصل ۱۰. عملیات Monadic برای std::optional<> و std::expected<>
فصل ۱۱. std::stacktrace
فصل ۱۲. Viewها
فصل ۱۳. دامها و خطاهای رایج در استفاده از Viewها
فصل ۱۴. بررسی تفصیلی Viewهای تکمیلی
فصل ۱۵. گسترشهای Ranges و Viewها
فصل ۱۶. الگوریتمهای جدید
فصل ۱۷. رابط Coroutine با std::generator<>
فصل ۱۸. بررسی تفصیلی std::generator<>
فصل ۱۹. Spanهای چندبعدی با std::mdspan
فصل ۲۰. جریانهای Span
فصل ۲۱. Containerهای تخت std::flat_set و std::flat_map
فصل ۲۲. بهبودهای کوچک زبان C++
فصل ۲۳. بهبودهای کوچک کتابخانه استاندارد C++
فصل ۲۴. بهبودهای کوچک برای متخصصان
📝 نقد و بررسی
💭 «چیزی که واقعاً به چشم میاد اینه که نیکولای فقط قابلیتهای جدید زبان و کتابخانه C++23 رو فهرست نمیکنه، بلکه هرکدوم رو در چارچوب انگیزه و زمینه شکلگیریش توضیح میده. وقتی پیش از نشوندادن روش استفاده، دلیل وجود یک قابلیت رو بررسی میکنی، مطلب به شکلی جا میفته که کتابهای مرجع صرف بهندرت از پسش برمیان. بهخصوص از صداقتی که درباره دامهای پنهانِ هنگام ترکیب قابلیتهای جدید به خرج داده خوشم میاد. این جزئیات فقط از کسی برمیاد که واقعاً با خود زبان زندگی کرده، نه اینکه صرفاً مشخصاتش رو خونده باشه.»
— ربکا یاروس
👤 درباره نویسنده
📚 نیکولای ام. یوسوتیس در جامعه C++ بهخاطر کتابها و سخنرانیهای معتبرش شناخته شده. از کتابهای او میشه به C++20 - The Complete Guide، C++ Move Semantics - The Complete Guide و The C++ Standard Library - A Tutorial and Reference اشاره کرد.
🧠 او همچنین یکی از نویسندگان کتاب C++ Templates: The Complete Guide است و بیش از ۲۵ سال عضو C++ Standards Committee بوده.
All the new language and library features of C++23 (for those who know the previous versions of C++).
C++23 is the next evolution in modern C++ programming and is now supported by the latest versions of gcc, clang, and Visual C++. It is the first release after introducing several new key features with C++20, which can be seen as the beginning of a new C++ release cycle.
C++23 contains both significant extensions and improvement of various features introduced with C++20 and a couple of new language and library features. As usual, not everything is self-explanatory, combining new features gives even more power, and there are hidden traps.
This book presents all the new language and library features of C++23. It covers the motivation and context of each new feature with examples and background information. The focus is on how these features impact day-to-day programming, what it means to combine them, and how to benefit from C++23 in practice.
"What really stands out to me is how Nicolai doesn't just catalog the new C++23 language and library features, but grounds each one in its motivation and context. Walking through why a feature exists before showing how to use it makes the material land in a way pure reference books rarely manage. I especially appreciate the honesty about the hidden traps that show up when combining new features. That's the kind of detail that only comes from someone who actually lives inside the language, not just read the spec."
(Rebecca Yarros)
Table of Contents
1. "Hello, World" with C++23
2. Modules std and std.compat
3. Formatted Output with std::print() and std::println()
4. Formatted Output Extensions
5. Fix of the Range-Based for Loop
6. Operator Extensions
7. Deducing this as an Explicit Object Parameter
8. auto() and auto{}
9. std::expected<>
10. Monadic Operations for std::optional<> and std::expected<>
11. std::stacktrace
12. Views
13. Pitfalls and Traps Using Views
14. Supplementary Views in Detail
15. Extensions for Ranges and Views
16. New Algorithms
17. Coroutine Interface std::generator<>
18. std::generator<> in Detail
19. Multi-Dimensional Spans std::mdspan
20. Span Streams
21. Flat Containers std::flat_set and std::flat_map
22. Small Improvements of the C++ Language
23. Small Improvements of the C++ Standard Library
24. Small Improvements for Experts
About the Author
Nicolai M. Josuttis is well-known in the C++ community for his authoritative books and talks. He is the author of ""C++20 - The Complete Guide", "C++ Move Semantics - The Complete Guide", "The C++ Standard Library - A tutorial and Reference", and (as a co-author) "C++ Templates: The Complete Guide." He has been a member of the C++ Standards Committee for more than 25 years.









