Касты при наследовании в C++: читаем стандарт
Почитаешь со мной новый working draft, %username%?
Мне очень понравилось, как элегантно стандарт описывает преобразования между базовыми и производными типами. По мне, это даже нагляднее, чем в большинстве популярных статей об этом (и тем более непопулярных, которые рассматривают неочевидные моменты очень развёрнуто). Давайте посмотрим на это поближе.
В этой статье я буду пользоваться 20 м стандартом. B значит вендетта base, D — derived.
Начнём с каста вверх: 7.3.11 Pointer conversions, пункт 3. Это standard conversion.