قالبها و برنامهنویسی عمومی (Templates & Generic Programming)
انتزاعهای واقعاً عمومی، قابل استفاده مجدد و بدون سربار را با استفاده از قالبها، مفاهیم و برنامهنویسی زمان کامپایل بنویسید.
مبانی قالبها
قالبهای تابع و استنتاج نوع (Function Templates & Type Deduction)
یاد بگیرید چگونه توابعی بنویسید که با هر نوعی کار کنند. استنتاج آرگومان قالب، پارامترهای غیرنوعی و دلیل قرار گرفتن قالبها در فایلهای هدر را درک کنید.
قالبهای کلاس و CTAD
ساختارهای داده عمومی را با قالبهای کلاس بسازید. تعریف اعضا، آرگومانهای پیشفرض و نحوه حذف آرگومانهای قالب توسط CTAD در C++17 را درک کنید.
قالبهای پیشرفته
تخصص قالب و ارسال برچسب (Template Specialization & Tag Dispatch)
تخصص کامل و جزئی را تسلط یابید، بیاموزید چه زمانی بارگذاری مجدد ترجیح دارد، و ارسال برچسب و if constexpr را بهعنوان جایگزینهایی برای انشعاب زمان کامپایل کشف کنید.
قالبهای متغیر-آرگومان و عبارات تا (Variadic Templates & Fold Expressions)
هر تعداد آرگومان قالب را با بستههای پارامتر مدیریت کنید. عبارات تا را برای پردازش ظریف و بدون بازگشت بستهها تسلط یابید.
SFINAE، ویژگیهای نوع و enable_if
اصل «شکست جایگزینی خطا نیست» (SFINAE) را درک کنید، از ویژگیهای نوع برای دروننگری زمان کامپایل استفاده کنید و قالبها را با enable_if محدود کنید.
برنامهنویسی عمومی مدرن
مفاهیم و محدودیتهای C++20 (Concepts & Constraints)
الزامات دقیق بر آرگومانهای قالب را با استفاده از مفاهیم تعریف کنید. کد عمومی تمیزتری با عبارات requires، قالبهای تابع اختصاری و مفاهیم کتابخانه استاندارد بنویسید.
constexpr، consteval و برنامهنویسی زمان کامپایل
محاسبات را با استفاده از constexpr، consteval و constinit از زمان اجرا به زمان کامپایل منتقل کنید. جداول جستجو بسازید، تنظیمات را اعتبارسنجی کنید و از ظروف constexpr استفاده کنید.
الگوهای متابرنامهنویسی قالب
الگوهای پیشرفته قالب را تسلط یابید: CRTP برای چندریختی ایستا، طراحی مبتنی بر سیاست برای ترکیب منعطف، محو نوع برای عمومیسازی زمان اجرا، و راهنمایی برای زمان استفاده از قالبها در مقابل ارسال مجازی.