استاندارد C++20 چندین ویژگی جدید از جمله Concepts را به زبان می آورد. مفاهیم یک ویژگی زبان جدید در C++20 است که به شما امکان می دهد محدودیت هایی را بر روی آرگومان های قالب تعریف و اعمال کنید. آنها کمک می کنند تا کد C++ شما رساتر، واضح تر و قابل نگهداری تر شود.
در C++20، میتوانید از مفاهیم برای تعیین الزامات روی آرگومانهای قالب استفاده کنید و کامپایلر تأیید میکند که این الزامات برآورده شدهاند. این کار نوشتن کد قابل استفاده مجدد و عمومی را آسان تر می کند که با همه انواعی که الزامات را برآورده می کنند، بدون نیاز به بررسی صریح نوع یا کد دیگ بخار کار می کند.
مفهوم مجموعه ای نامگذاری شده از الزامات است که آرگومان های الگو باید برآورده شوند. آنها اساساً رابطی را تعریف می کنند که آرگومان های الگو باید با آن مطابقت داشته باشند تا با یک الگوی داده شده استفاده شوند.
در اینجا مثالی از نحوه استفاده از مفاهیم در C++20 آورده شده است:
template <typename T>
concept Integer = std::is_integral_v<T>;
template <Integer T>
void print(T value) {
std::cout << value << std::endl;
}
int main() {
print(42);
print(1.234); // will give a compile-time error
return 0;
}
در این مثال، مفهومی به نام Integer تعریف میکنیم که باید آرگومان الگو از نوع انتگرال C++ باشد. سپس از این مفهوم برای محدود کردن پارامتر الگوی تابع چاپ استفاده می کنیم. تابع print اکنون فقط با آرگومان هایی فراخوانی می شود که مفهوم Integer را برآورده می کند. اگر بخواهید تابع را با آرگومان غیر صحیح فراخوانی کنید، کامپایلر به شما یک خطای زمان کامپایل می دهد.
Concepts یک ویژگی جدید قدرتمند در C++20 است که می تواند به شما کمک کند کدهای بهتر و عمومی تری بنویسید. آنها به شما اجازه بیان می دهند