Pregunta

Soy plenamente consciente de que el valor de retorno de std::type_info::name() es definido por la implementación.

A partir de la norma C ++ (ISO / IEC 14882: 2003 §18.5.1.7):

  

Devuelve:. una NTBS definido por la implementación

Mi pregunta es: ¿por qué? No sería esta función de miembro ser mucho más útil si la norma dicta cuál debe ser el valor de retorno?

¿Fue útil?

Solución

Básicamente, si una aplicación decide que no puede o no quiere apoyar RTTI, que sólo puede return "";. Si la norma lo obligó a devolver algo, tendrían posiblemente matar cualquier posibilidad de tener un compilador compatible para un entorno donde no existen los recursos para RTTI o quieren ser desactivado (un microchip, por ejemplo.)

Y no olvidemos que no queremos forzar un esquema de ABI / nombre-mangling en cualquier compiladores.

Esto sigue la filosofía de C ++ "No tiene que pagar por cosas que no necesitamos."

Otros consejos

¿Dónde estamos hablando de vendedores diferentes cadenas de regresar, creo que es sólo un "lo hacemos de esta manera, se cambia" "no, lo hacemos de esta manera, se cambia" cosa entre los fabricantes de compiladores. Incluso el Comité de Normas no quiere molestar a los equipos del compilador, y la creación de algunos neutra nueva norma, que no es empleado de cualquier proveedor tiende a significar algo hallazgo de que es de todas formas sin sentido.

¿Por qué no todos los espacios de nombres obvios :: :: clase funciones etc. ya? Algunas implementaciones actuales pueden tener encontrado que es conveniente tener que coincidan con los nombres alterados enlazador requerido, estado paranoide (o tenía clientes paranoides) re el uso de memoria, etc ..

históricamente
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top