https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116440

--- Comment #2 from Jonathan Wakely <redi at gcc dot gnu.org> ---
(In reply to Tiancheng Yu from comment #0)
> This only fails on gcc 14+ with -std=c++20 or higher. On older gcc versions
> with -std=c++20 or gcc 14+ with -std=c++17 it compiles fine.

GCC 14 has new definitions of std::tuple constructors that are used when C++20
is enabled, controlled by:

#if __cpp_concepts && __cpp_consteval && __cpp_conditional_explicit

> I also observed that clang trunk failed to compile with similar errors,

Because it's using the new libstdc++ headers.

> but
> clang 18 works fine, too.

Almost certainly because it's using older libstdc++ headers, probably from GCC
13.

It's not very useful to just say something works with clang on godbolt without
considering 
whether it's using libc++ or libstdc++, and for the latter, *which version* of
libstdc++.

Reply via email to