Я написали код для понимания typeid
оператор.UB с вызовом typeid
#include <iostream>
#include <typeinfo>
using std::cout;
using std::endl;
struct C;
struct B
{
long unsigned int hash;
B(C *c);
};
struct C : B
{
C() : B(this)
{
cout << "C()" << endl;
}
};
B::B(C *c)
{
hash = typeid(*c).hash_code(); //1, UB?
}
C c;
int main()
{
cout << c.hash << endl;
cout << typeid(c).hash_code() << endl;
}
Я думаю, что код, который я написал производят UB в //1
, потому что 12,7/5 говорит
Если операнд TypeID ссылается на объект незавершенного строительства или разрушения и статический тип операнд не является ни конструктор или деструктор класса, ни один из его баз, результат TypeID неопределен
Правильно?
plz смотреть редактировать> o < – ikh
(возможно) окончательное редактирование. plz see> o < – ikh