typeinfo与decltype使用

  • typeinfo 使用
#include <typeinfo>
#include <iostream>
using namespace std;

class White {};
class Black {};

// template <typename T>
// void printType(typename std::enable_if<is_class<T>::value, T>::type t)
// {
//     cout << "name=" << typeid(t).name() << ", hash_code=" << typeid(t).hash_code() << endl;
// }

template <typename T>
void printType(std::enable_if_t<std::is_class<T>::value, T> t)
{
    std::cout << "name=" << typeid(t).name() << ", hash_code=" << typeid(t).hash_code() << std::endl;
}


void typeidTest()
{
    White a, c;
    Black b;

    cout << "a.name=" << typeid(a).name() << ", a.hash_code=" << typeid(a).hash_code() << endl;
    cout << "b.name=" << typeid(b).name() << ", b.hash_code=" << typeid(b).hash_code() << endl;

    printType<White>(a);
    printType<White>(c);
    printType<Black>(b);

    // int x = 1;
    // printType<int>(x);

    struct s{};
    s y;
    printType<s>(y); 
}
posted @ 2025-05-22 18:32  codetodo  阅读(10)  评论(0)    收藏  举报