Duplicar posible:
When can typeid return different type_info instances for same type?impulso :: ninguna optimización typeid para C++ 11
Si cambio de la línea operand->type() == typeid(ValueType)
abajo en &operand->type() == &typeid(ValueType)
, el código sigue funcionando con gcc y toma menos espacio en el ejecutable (y lo hizo durante muchos años), pero ¿el estándar C++ 11 ofrece alguna garantía de que esta optimización funcione en diferentes compiladores?
template<typename ValueType>
ValueType * any_cast(any * operand)
{
return operand &&
#ifdef BOOST_AUX_ANY_TYPE_ID_NAME
std::strcmp(operand->type().name(), typeid(ValueType).name()) == 0
#else
operand->type() == typeid(ValueType)
#endif
? &static_cast<any::holder<ValueType> *>(operand->content)->held
: 0;
}
Eso es técnicamente una pregunta de C++ 03, y esta es C++ 11. Editando para que explícitamente no sea un duplicado (la respuesta sigue siendo correcta) – MSalters