struct C;
int storage;
C* ptr = (C*)&storage;
typeid(*ptr); //#1
All compilers report #1 is an error, with the diagnosis invalid use of incomplete type. However, there's no relevant rule in the standard that restricts the type of the glvalue operand in [expr.typeid]. Is it an omission?