رفتن به محتوا
ماژول 4

قالب‌ها و برنامه‌نویسی عمومی (Templates & Generic Programming)

انتزاع‌های واقعاً عمومی، قابل استفاده مجدد و بدون سربار را با استفاده از قالب‌ها، مفاهیم و برنامه‌نویسی زمان کامپایل بنویسید.

مبانی قالب‌ها

  1. قالب‌های تابع و استنتاج نوع (Function Templates & Type Deduction)

    یاد بگیرید چگونه توابعی بنویسید که با هر نوعی کار کنند. استنتاج آرگومان قالب، پارامترهای غیرنوعی و دلیل قرار گرفتن قالب‌ها در فایل‌های هدر را درک کنید.

  2. قالب‌های کلاس و CTAD

    ساختارهای داده عمومی را با قالب‌های کلاس بسازید. تعریف اعضا، آرگومان‌های پیش‌فرض و نحوه حذف آرگومان‌های قالب توسط CTAD در ‎C++‎17 را درک کنید.

قالب‌های پیشرفته

  1. تخصص قالب و ارسال برچسب (Template Specialization & Tag Dispatch)

    تخصص کامل و جزئی را تسلط یابید، بیاموزید چه زمانی بارگذاری مجدد ترجیح دارد، و ارسال برچسب و if constexpr را به‌عنوان جایگزین‌هایی برای انشعاب زمان کامپایل کشف کنید.

  2. قالب‌های متغیر-آرگومان و عبارات تا (Variadic Templates & Fold Expressions)

    هر تعداد آرگومان قالب را با بسته‌های پارامتر مدیریت کنید. عبارات تا را برای پردازش ظریف و بدون بازگشت بسته‌ها تسلط یابید.

  3. SFINAE، ویژگی‌های نوع و enable_if

    اصل «شکست جایگزینی خطا نیست» (SFINAE) را درک کنید، از ویژگی‌های نوع برای درون‌نگری زمان کامپایل استفاده کنید و قالب‌ها را با enable_if محدود کنید.

برنامه‌نویسی عمومی مدرن

  1. مفاهیم و محدودیت‌های ‎C++‎20 (Concepts & Constraints)

    الزامات دقیق بر آرگومان‌های قالب را با استفاده از مفاهیم تعریف کنید. کد عمومی تمیزتری با عبارات requires، قالب‌های تابع اختصاری و مفاهیم کتابخانه استاندارد بنویسید.

  2. constexpr، consteval و برنامه‌نویسی زمان کامپایل

    محاسبات را با استفاده از constexpr، consteval و constinit از زمان اجرا به زمان کامپایل منتقل کنید. جداول جستجو بسازید، تنظیمات را اعتبارسنجی کنید و از ظروف constexpr استفاده کنید.

  3. الگوهای متابرنامه‌نویسی قالب

    الگوهای پیشرفته قالب را تسلط یابید: CRTP برای چندریختی ایستا، طراحی مبتنی بر سیاست برای ترکیب منعطف، محو نوع برای عمومی‌سازی زمان اجرا، و راهنمایی برای زمان استفاده از قالب‌ها در مقابل ارسال مجازی.