https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89024
Marek Polacek <mpolacek at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |ice-on-valid-code Status|UNCONFIRMED |NEW Last reconfirmed| |2019-01-24 CC| |mpolacek at gcc dot gnu.org Target Milestone|--- |7.5 Summary|ICE testing convertibility |[7/8/9 Regression] ICE |of incomplete enumeration |testing convertibility of |types |incomplete enumeration | |types Ever confirmed|0 |1 --- Comment #1 from Marek Polacek <mpolacek at gcc dot gnu.org> --- Confirmed. Started with r159006, it's a regression. A valid version: template<class T> T&& declval(); template<typename _To1> void __test_aux(_To1); template<typename _From1, typename _To1, typename = decltype(__test_aux<_To1>(declval<_From1>()))> char __test(int); template<typename, typename> int __test(...); enum E { x = decltype(__test<E, int>(0))(0); };