https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65554
--- Comment #8 from Marek Polacek <mpolacek at gcc dot gnu.org> --- I think the original testcase and the reduced testcase point out to different issues. The issue with the testcase in comment 1 is that we don't reject the user-provided definition of std::initializer_list (it has a pointer followed by an integer field), but convert_like_real assumes that the second integer field has a size_type, which might not be true, here my fix helps. I don't know yet the cause of the ICE with the unreduced testcase. It might make sense to fix these separately.