https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111357
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Last reconfirmed| |2023-09-10 Ever confirmed|0 |1 Status|UNCONFIRMED |NEW --- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Reduced slightly: ``` #include <utility> using std::integer_sequence; using std::make_integer_sequence; template<int... V> void g(integer_sequence<int,V...>) {} template<typename ...T> struct c1 { static constexpr int value = 1; constexpr operator int() { return value; } }; template<typename T> struct R { using S = make_integer_sequence<int,c1<T>{}>; R() noexcept(noexcept(g(S()))) {} }; int main() { R<int>(); } ``` The obvious workaround in this case (and the tuple_size case) is to use `::value` (or tuple_size_v ).