#include <boost/core/demangle.hpp> #include <cstdlib> #include <iostream> #include <string> #include <typeinfo> struct Base { virtual ~Base() = default; }; struct Derived : Base {}; int main() { Base b1; Derived d1; const Base* pb = &b1; std::cout << typeid(*pb).name() ...
这应该比较容易,标准 C++ 有一个 type_info 类。这包含 typeid 的类/函数/等的名称。但它被破坏了。它不是很有用。即 typeid(std::vector<int>).name() 返回St6vectorIiSaIiEE。 有没有办法从中产生有用的东西?就像 std::vector<int> 上面的例子。如果它只适用于非模板类,那也没关系。 该解决方案应该...
解开std :: type_info :: name的结果 我目前正在研究一些日志代码,它们应该 - 除其他外 - 打印有关调用函数的信息。这应该相对容易,标准C ++有一个type_info类。它包含typeid'd类/函数/ etc的名称。但它被破坏了。它不是很有用。即typeid(std::vector<int>).name()回归St6vectorIiSaIiEE。 有没有办法...
std::type_info::hash_code std::type_info::name std::type_info::operator!= std::type_info::operators std::unary_function std::unary_negate std::uncaught_exception std::uncaught_exceptions std::undeclare_no_pointers std::undeclare_reachable std::underflow_error std::underlying_type std::unex...
std::cout << "Object type: " << typeInfo.name() << std::endl; // 使用dynamic_cast进行安全的类型转换 Derived* derivedPtr = dynamic_cast<Derived*>(basePtr); if (derivedPtr != nullptr) { std::cout << "Dynamic cast successful" << std::endl; ...
const char* TypeInfo::name() const{ assert(pInfo_); return pInfo_->name(); }// Comparison operators inline bool operator==(const TypeInfo& lhs, const TypeInfo& rhs) { return (lhs.Get() == rhs.Get()) != 0; } inline bool operator<(const TypeInfo& lhs, const TypeInfo&...
std::type_index::hash_code std::type_index::name std::type_index::operators std::type_index::type_index std::type_info std::type_info::before std::type_info::hash_code std::type_info::name std::type_info::operator!= std::type_info::operators std::unary_function std::unary_negat...
hash_code (C++11) 返回对于同一类型相同的值 (公开成员函数) name 类型的实现定义名称 (公开成员函数) 参阅 type_index (C++11) 对type_info 对象的包装,用作关联容器和无序关联容器的索引 (类) typeid 查询一个类型的信息,返回表示该类型的 std::type_info 对象(内建运算符) 首页...
It seems one workaround might be hash the type_info::name() string - as that that might be more stable across compiles and compilers. Eg from std::type_info::name: Some implementations (such as MSVC, IBM, Oracle) produce a human-readable type name. Others, most notably gcc and clang...
回到问题, std::any 的主流实现是通过存储一个 const std::type_info* 指针鉴别实际存储的对象类型的...