https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109625
--- Comment #1 from Arsen Arsenović <arsen at gcc dot gnu.org> --- related code (folly/Traits.h) #if FOLLY_HAS_BUILTIN(__type_pack_element) template <std::size_t I, typename... Ts> using type_pack_element_t = __type_pack_element<I, Ts...>; #else template <std::size_t I, typename... Ts> using type_pack_element_t = traits_detail::type_pack_element_fallback<I, Ts...>; #endif it is what it says on the tin :) do we want to match what clang does here? that being: ~ 1 $ clang++ -x c++ - -S -o - <<<$'template<class... T> void FOOBAR(__type_pack_element<4, T...>&&) {} void g() { FOOBAR<int, int, int, int, double>(3.0); }' | grep FOOBAR callq _Z6FOOBARIJiiiidEEvO19__type_pack_elementILm4EJDpT_EE ... not the prettiest