Eventuali duplicati:
When can typeid return different type_info instances for same type?boost :: alcuna ottimizzazione typeid per C++ 11
Se cambio la linea operand->type() == typeid(ValueType)
basso nella &operand->type() == &typeid(ValueType)
, il codice funziona ancora con gcc e prende meno spazio nel file eseguibile (e lo ha fatto per molti anni), ma lo standard C++ 11 offre qualche garanzia, che questa ottimizzazione dovrebbe funzionare su diversi compilatori?
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;
}
Questa è tecnicamente una domanda C++ 03, e questa è C++ 11. Modifica per renderlo esplicitamente non un duplicato (la risposta è ancora corretta) – MSalters