Giriş
std::remove_reference ve std::decay benzer işi yaparlar ancak aralarında bir fark bulunur. std::remove_reference const, volatile gibi qualifier'ları muhafaza eder. std::decay ise etmez
Örnek
Şöyle yaparız.
Şöyle yaparız.
std::remove_reference ve std::decay benzer işi yaparlar ancak aralarında bir fark bulunur. std::remove_reference const, volatile gibi qualifier'ları muhafaza eder. std::decay ise etmez
Örnek
Şöyle yaparız.
#include <iostream> // std::cout
#include <type_traits> // std::is_same
template<class T1, class T2>
void print_is_same() {
std::cout << std::is_same<T1, T2>() << '\n';
}
int main() {
std::cout << std::boolalpha;
print_is_same<int, int>(); //true
print_is_same<int, int &>(); //false
print_is_same<int, int &&>(); //false
print_is_same<int, std::remove_reference<int>::type>(); //true
print_is_same<int, std::remove_reference<int &>::type>(); //true
print_is_same<int, std::remove_reference<int &&>::type>(); //true
}
ÖrnekŞöyle yaparız.
#include <type_traits>
int main()
{
static_assert(std::is_same_v<
std::decay_t<const int&>,
std::remove_reference_t<const int&>
>); // int != const int
}
Hiç yorum yok:
Yorum Gönder