c++ - 对 RTTI raw_name() 的好奇心

标签 c++ visual-studio rtti typeinfo

在查看 C++ RTTI 和 type_info 类时,有时我会发现一个名为 raw_name() 的方法的描述,该方法用于返回类的 demangled 名称。我在 g++ 中找不到任何实现,只能找到方法 name()。您是否知道这是否是仅针对 Visual Studio/MS 的特定实现以及是否是 C++ 标准的一部分?

最佳答案

它是具体实现type_info 在标准中定义:

C++03 标准:18.7.1 类类型信息:

namespace std {
class type_info {
public:
virtual ~type_info();
bool operator==(const type_info& rhs) const noexcept;
bool operator!=(const type_info& rhs) const noexcept;
bool before(const type_info& rhs) const noexcept;
size_t hash_code() const noexcept;
const char* name() const noexcept;
type_info(const type_info& rhs) = delete; // cannot be copied
type_info& operator=(const type_info& rhs) = delete; // cannot be copied
};
}

如您所见,raw_data 不是标准定义的类成员。

关于c++ - 对 RTTI raw_name() 的好奇心,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14811401/

相关文章:

c++ - 同时迭代和修改 unordered_set?

.net - 升级 VS.NET 解决方案和目标 .NET 框架的手动步骤?

c# - COPY失败:构建上下文之外的禁止路径:../API.Common.AspNetCore/API.Common.AspNetCore.csproj()

css - .form-control 没有显示

C++ 在运行时检查函数签名是否存在?

C++ 运行时动态内存大小

从指向对象的指针访问运算符 () 的 C++ 语法

c++ - socket() 和bind() 的行为如何?

objective-c - isMemberOfClass 与比较类 ==

oop - 在运行时实现接口(interface)有什么好处?