11 Aralık 2017 Pazartesi

std::is_convertible Type Trait

std::is_convertible - Type Trait
Açıklaması şöyle.
std::is_convertible<From, To> (the type trait) checks is type From is implicitly convertible to type To.
std::is_convertible_v - Type Trait
std::is_convertible'ı kullanmasını kolaylaştırmak için vardır. C++17 ile geliyor.

Örnek
Şöyle yaparız.
static_assert(std::is_convertible_v<decltype(callable), decltype(callback)>,
 "Wrong Signature!");
std::convertible_to - Concept
C++20 ile geliyor. Açıklaması şöyle. Nesnenin user defined conversion operator ile de çevrilip çevrilemeyeceğini kontrol eder
std::convertible_to<From, To> (the concept) checks that From is both implicitly and explicitly convertible to To
Örnek
Şöyle yaparız. Burada From yapısı To yapısına implicit (üstü kapalı) şekilde de dönüştürülebiliyor.
struct From;
struct To {
    explicit To(From) = delete;
};
struct From {
    operator To();
};

static_assert(std::is_convertible_v<From, To>);
static_assert(not std::convertible_to<From, To>);



Hiç yorum yok:

Yorum Gönder