https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95561
Jonathan Wakely <redi at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |RESOLVED Resolution|--- |INVALID --- Comment #4 from Jonathan Wakely <redi at gcc dot gnu.org> --- Not a bug. Marc was asking *which* option you're using, -std=gnu++17 or -std=c++17. __int128 is not an integral type, so in strict -std=c++17 mode the standard requires that is_integral_v<__int128> is false and therefore is_signed_v<__int128> has to be false too. With -std=gnu++17 both are true. This is by design, not a bug. If you want to use non-standard extensions like __int128 and have them treated as integral types, don't ask for strict standard conformance with -std=c++17.