https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104184
--- Comment #1 from Marc Glisse <glisse at gcc dot gnu.org> --- A different reduction from the same code. This one does not compile with clang anymore. ICEs with -Wall -W, but not if I remove one of them. using mp_false = struct mp_identity { using type = void; }; template <bool, class T> using mp_if_c = typename T ::type; template <class L, long I> using mp_at_c = typename mp_if_c<I, L>::type; template <typename List, typename, typename> using make_arg_list = List; template <typename SpecSeq> using make_parameter_spec_items = SpecSeq; template <typename Parameters> struct argument_pack { using type = mp_at_c<typename make_arg_list< typename make_parameter_spec_items< typename Parameters::parameter_spec>::type, typename Parameters::deduced_listboosttag_keyword_arg, mp_false>::type, 0>; }; void no_exude(); template <typename> using boost_param_result_465refine_mesh_3 = mp_identity; template <typename ParameterArgumentType0, typename ParameterArgumentType1, typename ParameterArgumentType2, typename ParameterArgumentType3, typename ParameterArgumentType4, typename ParameterArgumentType5> typename boost_param_result_465refine_mesh_3< typename argument_pack<ParameterArgumentType5>::type>::type refine_mesh_3(ParameterArgumentType0, ParameterArgumentType1, ParameterArgumentType2, ParameterArgumentType3, ParameterArgumentType4, ParameterArgumentType5 a5) {} int verify___trans_tmp_1, image_domain; struct Tester { template <typename C3t3, typename Domain, typename Criteria, typename Domain_type_tag> void verify(C3t3 c3t3, Domain domain, Criteria criteria, Domain_type_tag) { refine_mesh_3(c3t3, domain, criteria, no_exude, verify___trans_tmp_1, verify___trans_tmp_1); } } image_c3t3; struct Image_tester : Tester { void image() { void criteria(); verify(image_c3t3, image_domain, criteria, int()); } };