In C++11 enum E { }; void f(bool b) { E e = b ? *new enum E : E{}; } should now compile: the colon is not an enum-base, it's part of a ternary operator. But we think we're defining a new type here, and reject it. See http://wg21.link/cwg1966
Probably related/covered in https://wg21.link/cwg2141 (PR50169).
Confirmed.