संभव डुप्लिकेट के लिए किसी भी typeid अनुकूलन:
When can typeid return different type_info instances for same type?बढ़ावा :: सी ++ 11
अगर मैं &operand->type() == &typeid(ValueType)
में नीचे operand->type() == typeid(ValueType)
लाइन बदलने के लिए, कोड अभी भी जीसीसी के साथ काम करता है और ले जाता है निष्पादन योग्य में कम जगह (और अब कई सालों से ऐसा किया गया है), लेकिन क्या सी ++ 11 मानक कोई गारंटी देता है, कि यह अनुकूलन विभिन्न कंपेलरों में काम करना चाहिए?
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;
}
यह तकनीकी रूप से एक C++ 03 प्रश्न है, और यह एक C++ 11 है। इसे स्पष्ट रूप से डुप्लिकेट नहीं करने के लिए संपादन (उत्तर अभी भी सही है) – MSalters