19 Ağustos 2020 Çarşamba

std::is_same_v

Giriş
İki tipin aynı olup olmadığını kontrol etmek için kullanılabilir. Bu metodun daha özelleşmiş halleri şunun gibidir
std::is_integral_v<T> 
std::is_floating_point<T> 
Eğer C++11 kullanıyorsak std::is_same() kullanılır. Açıklaması şöyle
std::is_same<A, B>::value is equivalent to std::is_same_v<A, B>
Örnek - const char olup olmadığı
T tipinin const char olup olmadığını kontrol etmek için şöyle yaparız
template <typename T>
void foo(const T &t) {
  if constexpr (std::is_same_v<const char*, T>) {
    // do something here
  }
}
Örnek - iki metodun aynı imzaya sahip olup olmadığı
Elimizde şöyle bir kod olsun.
int funA (int a, int b);
int funB (int a, int b);
Şöyle yaparız.
std::is_same_v<decltype(funA), decltype(funB)>  // true

Hiç yorum yok:

Yorum Gönder