Нелогичность static_cast
От: folk Россия  
Дата: 06.10.04 02:00
Оценка:
struct B {};
struct D : B {};

int main()
{
    B b;
    B* pb1 = reinterpret_cast<B*>( reinterpret_cast<D*>( &b ) ); // pb1 == &b
    B* pb2 = static_cast     <B*>( static_cast     <D*>( &b ) ); // значение pb2 неопределено согласно 5.2.9/1 :crash: 
}

1. Почему так жестоко? Неужто нельзя было просто ограничить операции, допустимые над результатом static_cast<D*>(B*) ?
2. Может я все-таки ошибаюсь и там нет ub?
На самом деле, люди не читают газеты, они принимают их каждое утро, так же как ванну. ©Маршалл Мак-Льюэн
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.