【发布时间】:2012-04-12 06:33:40
【问题描述】:
可能重复:
When can typeid return different type_info instances for same type?
如果我将下面的operand->type() == typeid(ValueType) 行更改为&operand->type() == &typeid(ValueType),代码仍然可以使用 gcc,并且在可执行文件中占用更少的空间(并且已经这样做了很多年),但是 C++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。编辑使其明确不重复(答案仍然正确)