Есть ли стандартная ф-ция определения класса объекта?
class A { };
class B: public A { };
int main()
{
B b;
A *pa = &b;
// false, а нужно что-то что выдает true
cout << (typeid(*pa).hash_code() == typeid(B).hash_code());
// true, а нужно что-то что выдает false
cout << (typeid(*pa).hash_code() == typeid(A).hash_code());
return 0;
}
Первый вариант легко реализовать (если включить RTTI и если класс полиморфный):
cout << (nullptr != dynamic_cast<B *>(pa));
Если класс не полиморфный то после приведения к базовому типу узнать оригинальный тип на основе RTTI нельзя.
decltype() - годится не только для классов, но и вообще для типов данных.
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости