Согласно [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
. Зачем?