https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113834
--- Comment #3 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Reduced testcase: ``` template <typename... _Elements> class tuple{}; template <unsigned long __i, typename... _Elements> __type_pack_element<__i, _Elements...> &get(tuple<_Elements...> &__t) noexcept; tuple<int,int> data; template <unsigned long Level> unsigned take_impl(unsigned idx) { if constexpr (Level != -1){ return take_impl<Level - 1>(get<Level - 1>(data)); } return 0; } int main() { take_impl<2>(0); } ``` Note I think this is invalid code ...