https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114695
--- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Note you don't need the extra template int argument either to reproduce the failure: ``` template <typename X> struct Bar { void accept(X value) { } }; template <typename...> struct Foo; template <typename... Ts> struct Foo<Bar<Ts>...> : Bar<Ts>... { template <typename T, template <typename> class B = ::Bar> constexpr static Bar<T>* slice_by_type(B<T>* self) { return self; } template <typename... Us> void accept(Us... values) { (slice_by_type<Us>(this)->accept(values), ...); } }; int main() { Foo<Bar<float>, Bar<int>> foo; foo.accept(3.14f, 10); } ```