CodeBlanks Logo Icon CodeBlanks

conditional

conditional ile derleme zamanı tür seçimi öğrenirsin.

conditional

std::conditional<C, A, B>, derleme zamanında bir tür seçer. C doğruysa A, yanlışsa B seçilir. Sonuç ::type ile okunur; C++14'ten beri std::conditional_t<C, A, B> kısaltması da kullanılır.

Örnek: using T = std::conditional_t<sizeof(int) == 4, int, long>; sizeof(int) == 4 ise T = int, değilse T = long olur. Bu, platforma göre farklı türler seçmek için kullanışlıdır; çalışma zamanında dal yoktur.

Tür diğer adı (alias) ile kullanım

conditional_t çoğu zaman bir using diğer adıyla kullanılır. Örnek: template <typename T> using SmallType = std::conditional_t<sizeof(T) <= 4, int, long>; Bu, T'nin boyutuna göre int veya long seçer. Sonra SmallType<char> yazılır.

Bu yöntem, kodu platformdan bağımsız kılar. 64-bit Linux'ta long 8 bayt; 32-bit Windows'ta 4 bayttır. conditional_t ile bayt boyutuna göre seçim yapılır; kullanıcı her platformda aynı davranışı görür.

Uygulama SmallType diğer adını yaz

template <typename T> using SmallType = std::conditional_t<sizeof(T) <= 4, int, long>; yaz. main içinde SmallType<char> x = 10; yaz ve std::cout << sizeof(x); ile boyutunu yazdır.

Başlangıç kodu

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

// SmallType diğer adını yaz

int main() {
    // SmallType<char> değişkeni tanımla ve boyutunu yazdır
    return 0;
}

Örnek çözüm

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

template <typename T>
using SmallType = std::conditional_t<sizeof(T) <= 4, int, long>;

int main() {
    SmallType<char> x = 10;
    std::cout << sizeof(x);
    return 0;
}

Beklenen çıktı

4

Soru ve cevaplar

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

1 İfadeyi rolüne eşle

Kavram Anlamı
std::conditional_t<C, A, B> Tür seçme kısaltması
std::conditional<C, A, B> Tür seçme şablonu
::type Klasik erişim
C Derleme zamanı koşulu

2 conditional satırını tamamla

Soru
template <typename T>
using SmallType = std::____<sizeof(T) <= 4, int, long>;
Cevap
template <typename T>
using SmallType = std::conditional_t<sizeof(T) <= 4, int, long>;

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

3 conditional_t<true, A, B> neyi seçer?

  • B
  • Ne A ne B
  • Derleme hatası
  • A Doğru cevap

Açıklama: Koşul true olduğunda ilk tür (A) seçilir.

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