Sobes.tech
Junior — Middle

C++'ta şablon parametrelerindeki türler üzerinde nasıl kısıtlamalar getirilebilir?

sobes.tech yapay zeka

AI'dan gelen yanıt

C++'ta, şablon parametrelerindeki türler üzerindeki kısıtlamalar birkaç şekilde belirlenebilir:

  1. SFINAE (Substitution Failure Is Not An Error)<type_traits> içindeki std::enable_if ve diğer meta-fonksiyonlar kullanılarak, türlerin özelliklerine bağlı olarak şablon fonksiyonları veya sınıflar dahil edilebilir veya hariç tutulabilir.
#include <type_traits>

template<typename T, typename = std::enable_if_t<std::is_integral_v<T>>>
void foo(T value) {
    // Tam sayı türleri için uygulama
}

int main() {
    foo(10);    // TAMAM, int tam sayıdır
    // foo(3.14); // Derleme hatası, double uygun değil
}
  1. Kavramlar (Concepts) — C++20'den itibaren, tür kısıtlamaları için daha okunabilir ve deklaratif kavramlar kullanılabilir.
#include <concepts>

template<std::integral T>
void foo(T value) {
    // Tam sayı türleri için uygulama
}
  1. Statik doğrulamalar (static_assert) — şablon içinde, türün özellikleri kontrol edilebilir ve mesaj ile derleme hatası verilebilir.
#include <type_traits>

template<typename T>
void foo(T value) {
    static_assert(std::is_integral_v<T>, "T tam sayı türü olmalı");
    // ...
}

Bu şekilde, kısıtlamalar şablonları daha güvenli ve anlaşılır hale getirmeye yardımcı olur.