为什么type_info :: name()未指定?

Job*_*Job 8 c++ typeinfo

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

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

返回:实现定义的NTBS.

我的问题是:为什么?如果标准规定返回值应该是什么,那么这个成员函数不会更有用吗?

GMa*_*ckG 5

基本上,如果实现决定他们不支持RTTI,则可以return "";。如果该标准强迫它返回某些内容,则它们可能会失去在不存在或希望禁用RTTI资源的环境中拥有兼容编译器的任何能力(例如,微芯片)。

而且不要忘了我们不想在任何编译器上强制使用ABI /名称处理方案。

这遵循C ++的哲学:“您不用为不需要的东西付钱”。