CodeBlanks Logo Icon CodeBlanks

Özet - Type traits

is_integral, enable_if ve conditional'ı birleştirerek bir generic fonksiyon yazarsın.

Özet - Type traits

Bu grupta type traits'in beş aracını gördün: std::is_integral_v ile tür sınıflama, std::enable_if_t ile SFINAE kısıtı, std::conditional_t ile derleme zamanı tür seçimi, std::decay_t ile tür ayıklama ve std::remove_reference_t ile yalnızca referans ayıklama. Hepsi derleme zamanında çalışır.

Bu araçlar birlikte, şablonların hangi türlerle çağrılabileceğini denetlemek ve türe göre farklı kod üretmek için kullanılır. Şimdi öğrendiklerini birleştiren küçük bir görev yazacaksın.

Uygulama WideType özet

template <typename T> using WideType = std::conditional_t<std::is_integral_v<T>, long, double>; yaz. main içinde std::cout << std::is_same_v<WideType<int>, long>; yaz.

Başlangıç kodu

main.cpp
#include <iostream>
#include <type_traits>

// WideType diğer adını yaz

int main() {
    // Sonucu yazdır
    return 0;
}

Örnek çözüm

main.cpp
#include <iostream>
#include <type_traits>

template <typename T>
using WideType = std::conditional_t<std::is_integral_v<T>, long, double>;

int main() {
    std::cout << std::is_same_v<WideType<int>, long>;
    return 0;
}

Beklenen çıktı

1

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Hangi araç derleme zamanında tür seçer?

  • std::is_integral_v
  • std::conditional_t Doğru cevap
  • std::decay_t
  • std::enable_if_t

Açıklama: std::conditional_t<C, A, B> derleme zamanında A veya B seçer.

2 Aracı amacına eşle

Kavram Anlamı
std::is_integral_v<T> Tür sınıflama
std::enable_if_t<cond> SFINAE kısıtı
std::conditional_t<C, A, B> Tür seçme
std::decay_t<T> Tür ayıklama

3 conditional satırını tamamla

Soru
template <typename T>
using WideType = std::____<std::is_integral_v<T>, long, double>;
Cevap
template <typename T>
using WideType = std::conditional_t<std::is_integral_v<T>, long, double>;

Açıklama: conditional_t<C, A, B> derleme zamanı tür seçer.

İleri seviye bölümündeki tüm dersler