https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108550
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Ever confirmed|0 |1 Status|UNCONFIRMED |NEW Last reconfirmed| |2023-01-27 --- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Reduced all the way (C++14 code): ``` template<class T> struct is_pointer { static constexpr bool value = false; }; template<class T, T T1> struct integral_constant { static constexpr T value = T1; }; template <class Tp> constexpr auto is_pointer_v = is_pointer<Tp>::value; template <class Tp, int = 0> integral_constant<bool, is_pointer_v<int>> Wrap1(); int main() { static_assert(!decltype(Wrap1<int>())::value, ""); // error return 0; } ``` Note the unused default template argument for Wrap1 is needed to produce the issue. Even the return type of Wrap1 does not need to be dependent either ...