Giriş
C++20 ile geliyor. std::type_identity aslında bir struct. Bu struct ile type bilgisi kod içinde rahatça dolaştırılabilir.
Şöyle yaparız. int ile çağrılan birinci kod type alan type_of metodunu tetikler. int{} yani değişken ile çağrılan ikinci kod, değişken alan birinci type_of() metodunu tetikler.
template<auto VAR> //Değişken
constexpr auto type_of() {
return std::type_identity<decltype(VAR)>{};
}
template<typename T> //Type
constexpr auto type_of() {
return std::type_identity<T>{};
}
template<typename T, typename... Args>
auto create(std::type_identity<T>, Args&&... args) {
return T{std::forward<Args>(args)...};
}
auto i1 = create(type_of<int>(), 7); //Type
auto i2 = create(type_of<int{}>(), 7); //Değişken
Hiç yorum yok:
Yorum Gönder