Чтобы расширить ответ Джонатана Уэйкли, типичным использованием typeid
является
if ( typeid(variable1) == typeid(variable2) )
// same type
но и
if ( typeid(variable1).name() == typeid(variable2).name() )
// same type
как видите, нет необходимости знать точное имя, определяемое реализацией. Поскольку вам это на самом деле не нужно, стандарт дает свободу реализации для более эффективной реализации, что достаточно хорошо.
Например, сравните _ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_ERKS6_S8_
и std::basic_string<char, std::char_traits<char>, std::allocator<char> > std::operator+<char, std::char_traits<char>, std::allocator<char> >(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)
: определенно менее подробный и эффективный, чтобы сравнивать и хранить.
person
edmz
schedule
02.09.2015