C++类型萃取基本用法
时间: 2025-01-19 10:07:17 浏览: 24
在C++中,类型提取(Type Extraction)通常用于模板元编程,特别是在需要在运行时确定类型信息的情况下。它涉及使用SFINAE(Substitution Failure Is Not An Error)原则来获取某个类型的信息,如成员函数、常量、类型别名等。
以下是几种常见的类型提取用法:
std::is_same
或decltype
: 这两个库函数可以帮助你检查两个类型的是否相等。例如,template <typename T> using IsSame = std::is_same<T, std::string>; // 检查T是否是std::string类型
typeid
和dynamic_cast
:typeid
返回一个表示类型的std::type_info
对象,可以用于字符串化类型名称。但是,dynamic_cast
配合typeid
可以更优雅地进行类型转换,dynamic_cast<T*>(ptr)->type(); // 获取指针所指向的对象的实际类型
类型别名和模板参数:有时你需要提取模板参数的实际类型,可以通过类型别名或
template<typename>
来完成,template <typename T> struct Type { using type = T; }; // 创建一个类型别名 static_assert(std::is_same<Type<int>::type, int>::value, "int expected");
相关推荐


















