thể trùng lặp:
When can typeid return different type_info instances for same type?boost :: bất kỳ tối ưu hóa typeid cho C++ 11
Nếu tôi thay đổi dòng operand->type() == typeid(ValueType)
dưới đây vào &operand->type() == &typeid(ValueType)
, mã vẫn hoạt động với gcc và mất tăng ít không gian hơn trong thực thi (và đã làm như vậy trong nhiều năm nay), nhưng tiêu chuẩn C++ 11 có đảm bảo rằng tối ưu hóa này có hoạt động trên các trình biên dịch khác nhau không?
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;
}
Về mặt kỹ thuật, câu hỏi C++ 03 và câu hỏi này là C++ 11. Chỉnh sửa để làm cho nó rõ ràng không phải là một bản sao (câu trả lời vẫn chính xác) – MSalters