我完全知道回报值 std::type_info::name() 是实现定义的。

来自C ++标准(ISO/IEC 14882:2003§18.5.1.7):

返回: 实现定义的NTB。

我的问题是:为什么?如果标准规定返回值应该是多少,该成员函数是否会更有用?

有帮助吗?

解决方案

基本上,如果实现决定他们不能或不想支持RTTI,则可以 return "";. 。如果标准迫使它返回某些东西,他们可能会杀死任何能够为RTTI资源不存在或希望被禁用的环境的合规编译器的能力(例如,微芯片)。

而且,不要忘记我们不想在任何编译器上强制ABI/命名计划。

这是C ++理念“您不需要不需要的东西”。

其他提示

在谈论供应商返回不同字符串的地方,我认为这只是一个“我们这样做,您会改变”“不,我们这样做,您会改变编译器供应商之间的事情。即使是标准委员会也不想惹恼编译器团队,并且创建一些中立的新标准,任何供应商都不使用的新标准往往意味着要找到一些荒谬的东西。

他们为什么还不是所有明显的名称空间:: class ::函数等?当前的某些实现可能历史上发现它很方便使其匹配链接器所需的被打乱的名称,是偏执(或具有偏执端客户)的记忆使用情况等。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top