سیپلاسپلاس در عصر استانداردهای جدید
این فصل جایگاه زبان، استاندارد و پیادهسازی را روشن میکند و نشان میدهد چرا نسخهٔ استاندارد با نسخهٔ کامپایلر یک مفهوم نیست. زبان، استاندارد و پیادهسازی این بخش موضوعهای زیر را با تعریف دقیق، مثال…
این فصل جایگاه زبان، استاندارد و پیادهسازی را روشن میکند و نشان میدهد چرا نسخهٔ استاندارد با نسخهٔ کامپایلر یک مفهوم نیست.
زبان، استاندارد و پیادهسازی
این بخش موضوعهای زیر را با تعریف دقیق، مثال مستقل، تحلیل خطاهای رایج و تمرین پوشش میدهد:
- تعریف زبان و قواعد معنایی
- نقش سند استاندارد
- کتابخانهٔ استاندارد
- پیادهسازیهای
GCC،ClangوMSVC
از C++20 تا C++26
این بخش موضوعهای زیر را با تعریف دقیق، مثال مستقل، تحلیل خطاهای رایج و تمرین پوشش میدهد:
C++20بهعنوان خط پایهٔ مدرن- تکمیل کتابخانه در
C++23 - قابلیتهای نسل بعدی در
C++26 - سازگاری و مهاجرت تدریجی
قابلیتسنجی
این بخش موضوعهای زیر را با تعریف دقیق، مثال مستقل، تحلیل خطاهای رایج و تمرین پوشش میدهد:
Feature-Test Macroها- آزمون قابلیت در
CMake - جلوگیری از وابستگی مستقیم به شمارهٔ نسخهٔ کامپایلر
قابلحملبودن
این بخش موضوعهای زیر را با تعریف دقیق، مثال مستقل، تحلیل خطاهای رایج و تمرین پوشش میدهد:
- رفتار تعریفشده
- رفتار وابسته به پیادهسازی
- افزونههای کامپایلر
- انتخاب سطح قابلحملبودن
نمونه: آزمون یک قابلیت استاندارد
شمارهٔ نسخهٔ کامپایلر بهتنهایی تضمین نمیکند که همهٔ قابلیتهای یک استاندارد در دسترس باشند. در کد، میتوان قابلیت را با ماکروهای آزمون ویژگی بررسی کرد:
export module moderncpp.feature_check;
export namespace moderncpp {
[[nodiscard]] constexpr auto has_expected() noexcept -> bool {
#if defined(__cpp_lib_expected) && __cpp_lib_expected >= 202202L
return true;
#else
return false;
#endif
}
} // namespace moderncpp
جمعبندی فصل
در نسخهٔ کامل، این بخش نکتههای اصلی، تصمیمهای مهندسی و ارتباط فصل با مباحث بعدی را مرور خواهد کرد.
نظرها ۰
گفتوگوی سازنده و مرتبط