Согласно [expr.cast]/4, кастинг в стиле C пытается выполнить следующие приказы:
-
const_cast -
static_cast -
static_castза которым следуетconst_cast -
reinterpret_cast -
reinterpret_castза которым следуетconst_cast
Следующий состав хорошо сформирован:
const_cast<int&>(static_cast<const int&>(0))
Тем не менее, как GCC, так и Clang отклоняют листинг (int&)0. Зачем?