Учитывая, что не существует надежного способа определить, на какой тип указатель указывает во время компиляции, это довольно сложная проблема для обнаружения во время компиляции.
Самый простой способ - выполнить перехват во время выполнения, используя макрос «safe_cast», который компилируется в dynamic_cast с assert в отладке и static_cast в выпуске.
Теперь, во время отладки, если приведение не подходит, динамическое приведение вернет NULL и подтвердит. Во время выпуска также нет накладных расходов.