From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 48) id 777AA3858012; Wed, 31 Mar 2021 09:26:00 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 777AA3858012 From: "nilsgladitz at gmail dot com" To: gcc-bugs@gcc.gnu.org Subject: [Bug libstdc++/99846] New: [11 regression] std::variant comparison operator error for recursive type Date: Wed, 31 Mar 2021 09:26:00 +0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: new X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: libstdc++ X-Bugzilla-Version: 11.0 X-Bugzilla-Keywords: X-Bugzilla-Severity: normal X-Bugzilla-Who: nilsgladitz at gmail dot com X-Bugzilla-Status: UNCONFIRMED X-Bugzilla-Resolution: X-Bugzilla-Priority: P3 X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org X-Bugzilla-Target-Milestone: --- X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: bug_id short_desc product version bug_status bug_severity priority component assigned_to reporter target_milestone attachments.created Message-ID: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 X-BeenThere: gcc-bugs@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-bugs mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 31 Mar 2021 09:26:00 -0000 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=3D99846 Bug ID: 99846 Summary: [11 regression] std::variant comparison operator error for recursive type Product: gcc Version: 11.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: libstdc++ Assignee: unassigned at gcc dot gnu.org Reporter: nilsgladitz at gmail dot com Target Milestone: --- Created attachment 50491 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=3D50491&action=3Dedit Test case source code The attached source is a test case I reduced from a JSON like library that = uses std::variant to store alternate value types. This still builds with GCC 10.2.0 but fails in 11.0.1 (g65374af219f) with: /opt/gcc/git-snapshot/include/c++/11.0.1/compare: In substitution of =E2=80=98template requires (three_way_comparable<_Types, std::partial_ordering> && ...) constexpr std::common_comparison_category_t...> std::operator<=3D>(const std::variant<_Types ...>&, const std::variant<_Types ...>&) [with _Types =3D {std::__cxx11::list >}]=E2=80=99: /opt/gcc/git-snapshot/include/c++/11.0.1/compare:893:10: required by substitution of =E2=80=98template constexpr auto std::__detail::_Synth3way::operator()(const _Tp&, const _Up&) const requires requires{{std::__detail::_Synth3way::operator()::__t < std::__detail::_Synth3way::operator()::__u} -> decltype(auto) [requires std::__detail::__boolean_testable<, >];{std::__detail::_Synth3way::operator()::__u < std::__detail::_Synth3way::operator()::__t} -> decltype(auto) [requires std::__detail::__boolean_testable<, >];} [with _Tp =3D Value; = _Up =3D Value]=E2=80=99 /opt/gcc/git-snapshot/include/c++/11.0.1/compare:914:34: required by substitution of =E2=80=98template using __synth3way_t= =3D decltype (std::__detail::__synth3way(declval<_Tp&>(), declval<_Up&>())) [with _Tp =3D Value; _Up =3D Value]=E2=80=99 /opt/gcc/git-snapshot/include/c++/11.0.1/bits/stl_list.h:2030:5: required= by substitution of =E2=80=98template std::__detail::__synth3way_t<_T1> std::operator<=3D>(const std::__cxx11::list<_Tp, _Alloc>&, const std::__cxx11::list<_Tp, _Alloc>&) [= with _Tp =3D Value; _Alloc =3D std::allocator]=E2=80=99 /opt/gcc/git-snapshot/include/c++/11.0.1/concepts:306:10: required by substitution of =E2=80=98template requires (three_way_comparable<_Types, std::partial_ordering> && ...) constexpr std::common_comparison_category_t...> std::operator<=3D>(const std::variant<_Types ...>&, const std::variant<_Types ...>&) [with _Types =3D {std::__cxx11::list >}]=E2=80=99 test.cpp:16:16: required from here /opt/gcc/git-snapshot/include/c++/11.0.1/variant:1218:5: required by the constraints of =E2=80=98template requires (three_way_comparable<_Types, std::partial_ordering> && ...) constexpr std::common_comparison_category_t...> std::operator<=3D>(const std::variant<_Types ...>&, const std::variant<_Types ...>&)=E2=80=99 cc1plus: error: satisfaction of atomic constraint =E2=80=98(three_way_comparable<_Types, std::partial_ordering> && ...) [with= _Types =3D {_Types ...}]=E2=80=99 depends on itself /opt/gcc/git-snapshot/include/c++/11.0.1/compare: In substitution of =E2=80=98template requires (three_way_comparable<_Types, std::partial_ordering> && ...) constexpr std::common_comparison_category_t...> std::operator<=3D>(const std::variant<_Types ...>&, const std::variant<_Types ...>&) [with _Types =3D {std::__cxx11::list >}]=E2=80=99: /opt/gcc/git-snapshot/include/c++/11.0.1/compare:894:10: required by substitution of =E2=80=98template constexpr auto std::__detail::_Synth3way::operator()(const _Tp&, const _Up&) const requires requires{{std::__detail::_Synth3way::operator()::__t < std::__detail::_Synth3way::operator()::__u} -> decltype(auto) [requires std::__detail::__boolean_testable<, >];{std::__detail::_Synth3way::operator()::__u < std::__detail::_Synth3way::operator()::__t} -> decltype(auto) [requires std::__detail::__boolean_testable<, >];} [with _Tp =3D Value; = _Up =3D Value]=E2=80=99 /opt/gcc/git-snapshot/include/c++/11.0.1/compare:914:34: required by substitution of =E2=80=98template using __synth3way_t= =3D decltype (std::__detail::__synth3way(declval<_Tp&>(), declval<_Up&>())) [with _Tp =3D Value; _Up =3D Value]=E2=80=99 /opt/gcc/git-snapshot/include/c++/11.0.1/bits/stl_list.h:2030:5: required= by substitution of =E2=80=98template std::__detail::__synth3way_t<_T1> std::operator<=3D>(const std::__cxx11::list<_Tp, _Alloc>&, const std::__cxx11::list<_Tp, _Alloc>&) [= with _Tp =3D Value; _Alloc =3D std::allocator]=E2=80=99 /opt/gcc/git-snapshot/include/c++/11.0.1/concepts:306:10: required by substitution of =E2=80=98template requires (three_way_comparable<_Types, std::partial_ordering> && ...) constexpr std::common_comparison_category_t...> std::operator<=3D>(const std::variant<_Types ...>&, const std::variant<_Types ...>&) [with _Types =3D {std::__cxx11::list >}]=E2=80=99 test.cpp:16:16: required from here /opt/gcc/git-snapshot/include/c++/11.0.1/variant:1218:5: required by the constraints of =E2=80=98template requires (three_way_comparable<_Types, std::partial_ordering> && ...) constexpr std::common_comparison_category_t...> std::operator<=3D>(const std::variant<_Types ...>&, const std::variant<_Types ...>&)=E2=80=99 cc1plus: error: satisfaction of atomic constraint =E2=80=98(three_way_comparable<_Types, std::partial_ordering> && ...) [with= _Types =3D {_Types ...}]=E2=80=99 depends on itself /opt/gcc/git-snapshot/include/c++/11.0.1/concepts: In substitution of =E2=80=98template requires (three_way_comparable<_Types, std::partial_ordering> && ...) constexpr std::common_comparison_category_t...> std::operator<=3D>(const std::variant<_Types ...>&, const std::variant<_Types ...>&) [with _Types =3D {std::__cxx11::list >}]=E2=80=99: /opt/gcc/git-snapshot/include/c++/11.0.1/concepts:306:10: required from =E2=80=98static constexpr bool std::__detail::_Synth3way::_S_noexcept(const= _Tp*, const _Up*) [with _Tp =3D Value; _Up =3D Value]=E2=80=99 /opt/gcc/git-snapshot/include/c++/11.0.1/compare:890:32: required from =E2=80=98constexpr auto std::__detail::_Synth3way::operator()(const _Tp&, c= onst _Up&) const requires requires{{std::__detail::_Synth3way::operator()::__t < std::__detail::_Synth3way::operator()::__u} -> decltype(auto) [requires std::__detail::__boolean_testable<, >];{std::__detail::_Synth3way::operator()::__u < std::__detail::_Synth3way::operator()::__t} -> decltype(auto) [requires std::__detail::__boolean_testable<, >];} [with _Tp =3D Value; = _Up =3D Value]=E2=80=99 /opt/gcc/git-snapshot/include/c++/11.0.1/compare:914:34: required by substitution of =E2=80=98template using __synth3way_t= =3D decltype (std::__detail::__synth3way(declval<_Tp&>(), declval<_Up&>())) [with _Tp =3D Value; _Up =3D Value]=E2=80=99 /opt/gcc/git-snapshot/include/c++/11.0.1/bits/stl_list.h:2030:5: required= by substitution of =E2=80=98template std::__detail::__synth3way_t<_T1> std::operator<=3D>(const std::__cxx11::list<_Tp, _Alloc>&, const std::__cxx11::list<_Tp, _Alloc>&) [= with _Tp =3D Value; _Alloc =3D std::allocator]=E2=80=99 /opt/gcc/git-snapshot/include/c++/11.0.1/concepts:306:10: required by substitution of =E2=80=98template requires (three_way_comparable<_Types, std::partial_ordering> && ...) constexpr std::common_comparison_category_t...> std::operator<=3D>(const std::variant<_Types ...>&, const std::variant<_Types ...>&) [with _Types =3D {std::__cxx11::list >}]=E2=80=99 test.cpp:16:16: required from here /opt/gcc/git-snapshot/include/c++/11.0.1/variant:1218:5: required by the constraints of =E2=80=98template requires (three_way_comparable<_Types, std::partial_ordering> && ...) constexpr std::common_comparison_category_t...> std::operator<=3D>(const std::variant<_Types ...>&, const std::variant<_Types ...>&)=E2=80=99 cc1plus: error: satisfaction of atomic constraint =E2=80=98(three_way_comparable<_Types, std::partial_ordering> && ...) [with= _Types =3D {_Types ...}]=E2=80=99 depends on itself /opt/gcc/git-snapshot/include/c++/11.0.1/concepts: In substitution of =E2=80=98template requires (three_way_comparable<_Types, std::partial_ordering> && ...) constexpr std::common_comparison_category_t...> std::operator<=3D>(const std::variant<_Types ...>&, const std::variant<_Types ...>&) [with _Types =3D {std::__cxx11::list >}]=E2=80=99: /opt/gcc/git-snapshot/include/c++/11.0.1/concepts:307:10: required from =E2=80=98static constexpr bool std::__detail::_Synth3way::_S_noexcept(const= _Tp*, const _Up*) [with _Tp =3D Value; _Up =3D Value]=E2=80=99 /opt/gcc/git-snapshot/include/c++/11.0.1/compare:890:32: required from =E2=80=98constexpr auto std::__detail::_Synth3way::operator()(const _Tp&, c= onst _Up&) const requires requires{{std::__detail::_Synth3way::operator()::__t < std::__detail::_Synth3way::operator()::__u} -> decltype(auto) [requires std::__detail::__boolean_testable<, >];{std::__detail::_Synth3way::operator()::__u < std::__detail::_Synth3way::operator()::__t} -> decltype(auto) [requires std::__detail::__boolean_testable<, >];} [with _Tp =3D Value; = _Up =3D Value]=E2=80=99 /opt/gcc/git-snapshot/include/c++/11.0.1/compare:914:34: required by substitution of =E2=80=98template using __synth3way_t= =3D decltype (std::__detail::__synth3way(declval<_Tp&>(), declval<_Up&>())) [with _Tp =3D Value; _Up =3D Value]=E2=80=99 /opt/gcc/git-snapshot/include/c++/11.0.1/bits/stl_list.h:2030:5: required= by substitution of =E2=80=98template std::__detail::__synth3way_t<_T1> std::operator<=3D>(const std::__cxx11::list<_Tp, _Alloc>&, const std::__cxx11::list<_Tp, _Alloc>&) [= with _Tp =3D Value; _Alloc =3D std::allocator]=E2=80=99 /opt/gcc/git-snapshot/include/c++/11.0.1/concepts:306:10: required by substitution of =E2=80=98template requires (three_way_comparable<_Types, std::partial_ordering> && ...) constexpr std::common_comparison_category_t...> std::operator<=3D>(const std::variant<_Types ...>&, const std::variant<_Types ...>&) [with _Types =3D {std::__cxx11::list >}]=E2=80=99 test.cpp:16:16: required from here /opt/gcc/git-snapshot/include/c++/11.0.1/variant:1218:5: required by the constraints of =E2=80=98template requires (three_way_comparable<_Types, std::partial_ordering> && ...) constexpr std::common_comparison_category_t...> std::operator<=3D>(const std::variant<_Types ...>&, const std::variant<_Types ...>&)=E2=80=99 cc1plus: error: satisfaction of atomic constraint =E2=80=98(three_way_comparable<_Types, std::partial_ordering> && ...) [with= _Types =3D {_Types ...}]=E2=80=99 depends on itself /opt/gcc/git-snapshot/include/c++/11.0.1/concepts: In substitution of =E2=80=98template requires (three_way_comparable<_Types, std::partial_ordering> && ...) constexpr std::common_comparison_category_t...> std::operator<=3D>(const std::variant<_Types ...>&, const std::variant<_Types ...>&) [with _Types =3D {std::__cxx11::list >}]=E2=80=99: /opt/gcc/git-snapshot/include/c++/11.0.1/concepts:308:10: required from =E2=80=98static constexpr bool std::__detail::_Synth3way::_S_noexcept(const= _Tp*, const _Up*) [with _Tp =3D Value; _Up =3D Value]=E2=80=99 /opt/gcc/git-snapshot/include/c++/11.0.1/compare:890:32: required from =E2=80=98constexpr auto std::__detail::_Synth3way::operator()(const _Tp&, c= onst _Up&) const requires requires{{std::__detail::_Synth3way::operator()::__t < std::__detail::_Synth3way::operator()::__u} -> decltype(auto) [requires std::__detail::__boolean_testable<, >];{std::__detail::_Synth3way::operator()::__u < std::__detail::_Synth3way::operator()::__t} -> decltype(auto) [requires std::__detail::__boolean_testable<, >];} [with _Tp =3D Value; = _Up =3D Value]=E2=80=99 /opt/gcc/git-snapshot/include/c++/11.0.1/compare:914:34: required by substitution of =E2=80=98template using __synth3way_t= =3D decltype (std::__detail::__synth3way(declval<_Tp&>(), declval<_Up&>())) [with _Tp =3D Value; _Up =3D Value]=E2=80=99 /opt/gcc/git-snapshot/include/c++/11.0.1/bits/stl_list.h:2030:5: required= by substitution of =E2=80=98template std::__detail::__synth3way_t<_T1> std::operator<=3D>(const std::__cxx11::list<_Tp, _Alloc>&, const std::__cxx11::list<_Tp, _Alloc>&) [= with _Tp =3D Value; _Alloc =3D std::allocator]=E2=80=99 /opt/gcc/git-snapshot/include/c++/11.0.1/concepts:306:10: required by substitution of =E2=80=98template requires (three_way_comparable<_Types, std::partial_ordering> && ...) constexpr std::common_comparison_category_t...> std::operator<=3D>(const std::variant<_Types ...>&, const std::variant<_Types ...>&) [with _Types =3D {std::__cxx11::list >}]=E2=80=99 test.cpp:16:16: required from here /opt/gcc/git-snapshot/include/c++/11.0.1/variant:1218:5: required by the constraints of =E2=80=98template requires (three_way_comparable<_Types, std::partial_ordering> && ...) constexpr std::common_comparison_category_t...> std::operator<=3D>(const std::variant<_Types ...>&, const std::variant<_Types ...>&)=E2=80=99 cc1plus: error: satisfaction of atomic constraint =E2=80=98(three_way_comparable<_Types, std::partial_ordering> && ...) [with= _Types =3D {_Types ...}]=E2=80=99 depends on itself /opt/gcc/git-snapshot/include/c++/11.0.1/concepts: In substitution of =E2=80=98template requires (three_way_comparable<_Types, std::partial_ordering> && ...) constexpr std::common_comparison_category_t...> std::operator<=3D>(const std::variant<_Types ...>&, const std::variant<_Types ...>&) [with _Types =3D {std::__cxx11::list >}]=E2=80=99: /opt/gcc/git-snapshot/include/c++/11.0.1/concepts:309:10: required from =E2=80=98static constexpr bool std::__detail::_Synth3way::_S_noexcept(const= _Tp*, const _Up*) [with _Tp =3D Value; _Up =3D Value]=E2=80=99 /opt/gcc/git-snapshot/include/c++/11.0.1/compare:890:32: required from =E2=80=98constexpr auto std::__detail::_Synth3way::operator()(const _Tp&, c= onst _Up&) const requires requires{{std::__detail::_Synth3way::operator()::__t < std::__detail::_Synth3way::operator()::__u} -> decltype(auto) [requires std::__detail::__boolean_testable<, >];{std::__detail::_Synth3way::operator()::__u < std::__detail::_Synth3way::operator()::__t} -> decltype(auto) [requires std::__detail::__boolean_testable<, >];} [with _Tp =3D Value; = _Up =3D Value]=E2=80=99 /opt/gcc/git-snapshot/include/c++/11.0.1/compare:914:34: required by substitution of =E2=80=98template using __synth3way_t= =3D decltype (std::__detail::__synth3way(declval<_Tp&>(), declval<_Up&>())) [with _Tp =3D Value; _Up =3D Value]=E2=80=99 /opt/gcc/git-snapshot/include/c++/11.0.1/bits/stl_list.h:2030:5: required= by substitution of =E2=80=98template std::__detail::__synth3way_t<_T1> std::operator<=3D>(const std::__cxx11::list<_Tp, _Alloc>&, const std::__cxx11::list<_Tp, _Alloc>&) [= with _Tp =3D Value; _Alloc =3D std::allocator]=E2=80=99 /opt/gcc/git-snapshot/include/c++/11.0.1/concepts:306:10: required by substitution of =E2=80=98template requires (three_way_comparable<_Types, std::partial_ordering> && ...) constexpr std::common_comparison_category_t...> std::operator<=3D>(const std::variant<_Types ...>&, const std::variant<_Types ...>&) [with _Types =3D {std::__cxx11::list >}]=E2=80=99 test.cpp:16:16: required from here /opt/gcc/git-snapshot/include/c++/11.0.1/variant:1218:5: required by the constraints of =E2=80=98template requires (three_way_comparable<_Types, std::partial_ordering> && ...) constexpr std::common_comparison_category_t...> std::operator<=3D>(const std::variant<_Types ...>&, const std::variant<_Types ...>&)=E2=80=99 cc1plus: error: satisfaction of atomic constraint =E2=80=98(three_way_comparable<_Types, std::partial_ordering> && ...) [with= _Types =3D {_Types ...}]=E2=80=99 depends on itself /opt/gcc/git-snapshot/include/c++/11.0.1/concepts: In substitution of =E2=80=98template requires (three_way_comparable<_Types, std::partial_ordering> && ...) constexpr std::common_comparison_category_t...> std::operator<=3D>(const std::variant<_Types ...>&, const std::variant<_Types ...>&) [with _Types =3D {std::__cxx11::list >}]=E2=80=99: /opt/gcc/git-snapshot/include/c++/11.0.1/concepts:310:10: required from =E2=80=98static constexpr bool std::__detail::_Synth3way::_S_noexcept(const= _Tp*, const _Up*) [with _Tp =3D Value; _Up =3D Value]=E2=80=99 /opt/gcc/git-snapshot/include/c++/11.0.1/compare:890:32: required from =E2=80=98constexpr auto std::__detail::_Synth3way::operator()(const _Tp&, c= onst _Up&) const requires requires{{std::__detail::_Synth3way::operator()::__t < std::__detail::_Synth3way::operator()::__u} -> decltype(auto) [requires std::__detail::__boolean_testable<, >];{std::__detail::_Synth3way::operator()::__u < std::__detail::_Synth3way::operator()::__t} -> decltype(auto) [requires std::__detail::__boolean_testable<, >];} [with _Tp =3D Value; = _Up =3D Value]=E2=80=99 /opt/gcc/git-snapshot/include/c++/11.0.1/compare:914:34: required by substitution of =E2=80=98template using __synth3way_t= =3D decltype (std::__detail::__synth3way(declval<_Tp&>(), declval<_Up&>())) [with _Tp =3D Value; _Up =3D Value]=E2=80=99 /opt/gcc/git-snapshot/include/c++/11.0.1/bits/stl_list.h:2030:5: required= by substitution of =E2=80=98template std::__detail::__synth3way_t<_T1> std::operator<=3D>(const std::__cxx11::list<_Tp, _Alloc>&, const std::__cxx11::list<_Tp, _Alloc>&) [= with _Tp =3D Value; _Alloc =3D std::allocator]=E2=80=99 /opt/gcc/git-snapshot/include/c++/11.0.1/concepts:306:10: required by substitution of =E2=80=98template requires (three_way_comparable<_Types, std::partial_ordering> && ...) constexpr std::common_comparison_category_t...> std::operator<=3D>(const std::variant<_Types ...>&, const std::variant<_Types ...>&) [with _Types =3D {std::__cxx11::list >}]=E2=80=99 test.cpp:16:16: required from here /opt/gcc/git-snapshot/include/c++/11.0.1/variant:1218:5: required by the constraints of =E2=80=98template requires (three_way_comparable<_Types, std::partial_ordering> && ...) constexpr std::common_comparison_category_t...> std::operator<=3D>(const std::variant<_Types ...>&, const std::variant<_Types ...>&)=E2=80=99 cc1plus: error: satisfaction of atomic constraint =E2=80=98(three_way_comparable<_Types, std::partial_ordering> && ...) [with= _Types =3D {_Types ...}]=E2=80=99 depends on itself /opt/gcc/git-snapshot/include/c++/11.0.1/concepts: In substitution of =E2=80=98template requires (three_way_comparable<_Types, std::partial_ordering> && ...) constexpr std::common_comparison_category_t...> std::operator<=3D>(const std::variant<_Types ...>&, const std::variant<_Types ...>&) [with _Types =3D {std::__cxx11::list >}]=E2=80=99: /opt/gcc/git-snapshot/include/c++/11.0.1/concepts:311:10: required from =E2=80=98static constexpr bool std::__detail::_Synth3way::_S_noexcept(const= _Tp*, const _Up*) [with _Tp =3D Value; _Up =3D Value]=E2=80=99 /opt/gcc/git-snapshot/include/c++/11.0.1/compare:890:32: required from =E2=80=98constexpr auto std::__detail::_Synth3way::operator()(const _Tp&, c= onst _Up&) const requires requires{{std::__detail::_Synth3way::operator()::__t < std::__detail::_Synth3way::operator()::__u} -> decltype(auto) [requires std::__detail::__boolean_testable<, >];{std::__detail::_Synth3way::operator()::__u < std::__detail::_Synth3way::operator()::__t} -> decltype(auto) [requires std::__detail::__boolean_testable<, >];} [with _Tp =3D Value; = _Up =3D Value]=E2=80=99 /opt/gcc/git-snapshot/include/c++/11.0.1/compare:914:34: required by substitution of =E2=80=98template using __synth3way_t= =3D decltype (std::__detail::__synth3way(declval<_Tp&>(), declval<_Up&>())) [with _Tp =3D Value; _Up =3D Value]=E2=80=99 /opt/gcc/git-snapshot/include/c++/11.0.1/bits/stl_list.h:2030:5: required= by substitution of =E2=80=98template std::__detail::__synth3way_t<_T1> std::operator<=3D>(const std::__cxx11::list<_Tp, _Alloc>&, const std::__cxx11::list<_Tp, _Alloc>&) [= with _Tp =3D Value; _Alloc =3D std::allocator]=E2=80=99 /opt/gcc/git-snapshot/include/c++/11.0.1/concepts:306:10: required by substitution of =E2=80=98template requires (three_way_comparable<_Types, std::partial_ordering> && ...) constexpr std::common_comparison_category_t...> std::operator<=3D>(const std::variant<_Types ...>&, const std::variant<_Types ...>&) [with _Types =3D {std::__cxx11::list >}]=E2=80=99 test.cpp:16:16: required from here /opt/gcc/git-snapshot/include/c++/11.0.1/variant:1218:5: required by the constraints of =E2=80=98template requires (three_way_comparable<_Types, std::partial_ordering> && ...) constexpr std::common_comparison_category_t...> std::operator<=3D>(const std::variant<_Types ...>&, const std::variant<_Types ...>&)=E2=80=99 cc1plus: error: satisfaction of atomic constraint =E2=80=98(three_way_comparable<_Types, std::partial_ordering> && ...) [with= _Types =3D {_Types ...}]=E2=80=99 depends on itself /opt/gcc/git-snapshot/include/c++/11.0.1/concepts: In substitution of =E2=80=98template requires (three_way_comparable<_Types, std::partial_ordering> && ...) constexpr std::common_comparison_category_t...> std::operator<=3D>(const std::variant<_Types ...>&, const std::variant<_Types ...>&) [with _Types =3D {std::__cxx11::list >}]=E2=80=99: /opt/gcc/git-snapshot/include/c++/11.0.1/concepts:312:10: required from =E2=80=98static constexpr bool std::__detail::_Synth3way::_S_noexcept(const= _Tp*, const _Up*) [with _Tp =3D Value; _Up =3D Value]=E2=80=99 /opt/gcc/git-snapshot/include/c++/11.0.1/compare:890:32: required from =E2=80=98constexpr auto std::__detail::_Synth3way::operator()(const _Tp&, c= onst _Up&) const requires requires{{std::__detail::_Synth3way::operator()::__t < std::__detail::_Synth3way::operator()::__u} -> decltype(auto) [requires std::__detail::__boolean_testable<, >];{std::__detail::_Synth3way::operator()::__u < std::__detail::_Synth3way::operator()::__t} -> decltype(auto) [requires std::__detail::__boolean_testable<, >];} [with _Tp =3D Value; = _Up =3D Value]=E2=80=99 /opt/gcc/git-snapshot/include/c++/11.0.1/compare:914:34: required by substitution of =E2=80=98template using __synth3way_t= =3D decltype (std::__detail::__synth3way(declval<_Tp&>(), declval<_Up&>())) [with _Tp =3D Value; _Up =3D Value]=E2=80=99 /opt/gcc/git-snapshot/include/c++/11.0.1/bits/stl_list.h:2030:5: required= by substitution of =E2=80=98template std::__detail::__synth3way_t<_T1> std::operator<=3D>(const std::__cxx11::list<_Tp, _Alloc>&, const std::__cxx11::list<_Tp, _Alloc>&) [= with _Tp =3D Value; _Alloc =3D std::allocator]=E2=80=99 /opt/gcc/git-snapshot/include/c++/11.0.1/concepts:306:10: required by substitution of =E2=80=98template requires (three_way_comparable<_Types, std::partial_ordering> && ...) constexpr std::common_comparison_category_t...> std::operator<=3D>(const std::variant<_Types ...>&, const std::variant<_Types ...>&) [with _Types =3D {std::__cxx11::list >}]=E2=80=99 test.cpp:16:16: required from here /opt/gcc/git-snapshot/include/c++/11.0.1/variant:1218:5: required by the constraints of =E2=80=98template requires (three_way_comparable<_Types, std::partial_ordering> && ...) constexpr std::common_comparison_category_t...> std::operator<=3D>(const std::variant<_Types ...>&, const std::variant<_Types ...>&)=E2=80=99 cc1plus: error: satisfaction of atomic constraint =E2=80=98(three_way_comparable<_Types, std::partial_ordering> && ...) [with= _Types =3D {_Types ...}]=E2=80=99 depends on itself /opt/gcc/git-snapshot/include/c++/11.0.1/concepts: In substitution of =E2=80=98template requires (three_way_comparable<_Types, std::partial_ordering> && ...) constexpr std::common_comparison_category_t...> std::operator<=3D>(const std::variant<_Types ...>&, const std::variant<_Types ...>&) [with _Types =3D {std::__cxx11::list >}]=E2=80=99: /opt/gcc/git-snapshot/include/c++/11.0.1/concepts:313:10: required from =E2=80=98static constexpr bool std::__detail::_Synth3way::_S_noexcept(const= _Tp*, const _Up*) [with _Tp =3D Value; _Up =3D Value]=E2=80=99 /opt/gcc/git-snapshot/include/c++/11.0.1/compare:890:32: required from =E2=80=98constexpr auto std::__detail::_Synth3way::operator()(const _Tp&, c= onst _Up&) const requires requires{{std::__detail::_Synth3way::operator()::__t < std::__detail::_Synth3way::operator()::__u} -> decltype(auto) [requires std::__detail::__boolean_testable<, >];{std::__detail::_Synth3way::operator()::__u < std::__detail::_Synth3way::operator()::__t} -> decltype(auto) [requires std::__detail::__boolean_testable<, >];} [with _Tp =3D Value; = _Up =3D Value]=E2=80=99 /opt/gcc/git-snapshot/include/c++/11.0.1/compare:914:34: required by substitution of =E2=80=98template using __synth3way_t= =3D decltype (std::__detail::__synth3way(declval<_Tp&>(), declval<_Up&>())) [with _Tp =3D Value; _Up =3D Value]=E2=80=99 /opt/gcc/git-snapshot/include/c++/11.0.1/bits/stl_list.h:2030:5: required= by substitution of =E2=80=98template std::__detail::__synth3way_t<_T1> std::operator<=3D>(const std::__cxx11::list<_Tp, _Alloc>&, const std::__cxx11::list<_Tp, _Alloc>&) [= with _Tp =3D Value; _Alloc =3D std::allocator]=E2=80=99 /opt/gcc/git-snapshot/include/c++/11.0.1/concepts:306:10: required by substitution of =E2=80=98template requires (three_way_comparable<_Types, std::partial_ordering> && ...) constexpr std::common_comparison_category_t...> std::operator<=3D>(const std::variant<_Types ...>&, const std::variant<_Types ...>&) [with _Types =3D {std::__cxx11::list >}]=E2=80=99 test.cpp:16:16: required from here /opt/gcc/git-snapshot/include/c++/11.0.1/variant:1218:5: required by the constraints of =E2=80=98template requires (three_way_comparable<_Types, std::partial_ordering> && ...) constexpr std::common_comparison_category_t...> std::operator<=3D>(const std::variant<_Types ...>&, const std::variant<_Types ...>&)=E2=80=99 cc1plus: error: satisfaction of atomic constraint =E2=80=98(three_way_comparable<_Types, std::partial_ordering> && ...) [with= _Types =3D {_Types ...}]=E2=80=99 depends on itself /opt/gcc/git-snapshot/include/c++/11.0.1/compare: In substitution of =E2=80=98template requires (three_way_comparable<_Types, std::partial_ordering> && ...) constexpr std::common_comparison_category_t...> std::operator<=3D>(const std::variant<_Types ...>&, const std::variant<_Types ...>&) [with _Types =3D {std::__cxx11::list >}]=E2=80=99: /opt/gcc/git-snapshot/include/c++/11.0.1/compare:424:8: required from =E2= =80=98static constexpr bool std::__detail::_Synth3way::_S_noexcept(const _Tp*, const _Up= *) [with _Tp =3D Value; _Up =3D Value]=E2=80=99 /opt/gcc/git-snapshot/include/c++/11.0.1/compare:890:32: required from =E2=80=98constexpr auto std::__detail::_Synth3way::operator()(const _Tp&, c= onst _Up&) const requires requires{{std::__detail::_Synth3way::operator()::__t < std::__detail::_Synth3way::operator()::__u} -> decltype(auto) [requires std::__detail::__boolean_testable<, >];{std::__detail::_Synth3way::operator()::__u < std::__detail::_Synth3way::operator()::__t} -> decltype(auto) [requires std::__detail::__boolean_testable<, >];} [with _Tp =3D Value; = _Up =3D Value]=E2=80=99 /opt/gcc/git-snapshot/include/c++/11.0.1/compare:914:34: required by substitution of =E2=80=98template using __synth3way_t= =3D decltype (std::__detail::__synth3way(declval<_Tp&>(), declval<_Up&>())) [with _Tp =3D Value; _Up =3D Value]=E2=80=99 /opt/gcc/git-snapshot/include/c++/11.0.1/bits/stl_list.h:2030:5: required= by substitution of =E2=80=98template std::__detail::__synth3way_t<_T1> std::operator<=3D>(const std::__cxx11::list<_Tp, _Alloc>&, const std::__cxx11::list<_Tp, _Alloc>&) [= with _Tp =3D Value; _Alloc =3D std::allocator]=E2=80=99 /opt/gcc/git-snapshot/include/c++/11.0.1/concepts:306:10: required by substitution of =E2=80=98template requires (three_way_comparable<_Types, std::partial_ordering> && ...) constexpr std::common_comparison_category_t...> std::operator<=3D>(const std::variant<_Types ...>&, const std::variant<_Types ...>&) [with _Types =3D {std::__cxx11::list >}]=E2=80=99 test.cpp:16:16: required from here /opt/gcc/git-snapshot/include/c++/11.0.1/variant:1218:5: required by the constraints of =E2=80=98template requires (three_way_comparable<_Types, std::partial_ordering> && ...) constexpr std::common_comparison_category_t...> std::operator<=3D>(const std::variant<_Types ...>&, const std::variant<_Types ...>&)=E2=80=99 cc1plus: error: satisfaction of atomic constraint =E2=80=98(three_way_comparable<_Types, std::partial_ordering> && ...) [with= _Types =3D {_Types ...}]=E2=80=99 depends on itself /opt/gcc/git-snapshot/include/c++/11.0.1/compare: In substitution of =E2=80=98template requires (three_way_comparable<_Types, std::partial_ordering> && ...) constexpr std::common_comparison_category_t...> std::operator<=3D>(const std::variant<_Types ...>&, const std::variant<_Types ...>&) [with _Types =3D {std::__cxx11::list >}]=E2=80=99: /opt/gcc/git-snapshot/include/c++/11.0.1/compare:884:27: required from =E2=80=98static constexpr bool std::__detail::_Synth3way::_S_noexcept(const= _Tp*, const _Up*) [with _Tp =3D Value; _Up =3D Value]=E2=80=99 /opt/gcc/git-snapshot/include/c++/11.0.1/compare:890:32: required from =E2=80=98constexpr auto std::__detail::_Synth3way::operator()(const _Tp&, c= onst _Up&) const requires requires{{std::__detail::_Synth3way::operator()::__t < std::__detail::_Synth3way::operator()::__u} -> decltype(auto) [requires std::__detail::__boolean_testable<, >];{std::__detail::_Synth3way::operator()::__u < std::__detail::_Synth3way::operator()::__t} -> decltype(auto) [requires std::__detail::__boolean_testable<, >];} [with _Tp =3D Value; = _Up =3D Value]=E2=80=99 /opt/gcc/git-snapshot/include/c++/11.0.1/compare:914:34: required by substitution of =E2=80=98template using __synth3way_t= =3D decltype (std::__detail::__synth3way(declval<_Tp&>(), declval<_Up&>())) [with _Tp =3D Value; _Up =3D Value]=E2=80=99 /opt/gcc/git-snapshot/include/c++/11.0.1/bits/stl_list.h:2030:5: required= by substitution of =E2=80=98template std::__detail::__synth3way_t<_T1> std::operator<=3D>(const std::__cxx11::list<_Tp, _Alloc>&, const std::__cxx11::list<_Tp, _Alloc>&) [= with _Tp =3D Value; _Alloc =3D std::allocator]=E2=80=99 /opt/gcc/git-snapshot/include/c++/11.0.1/concepts:306:10: required by substitution of =E2=80=98template requires (three_way_comparable<_Types, std::partial_ordering> && ...) constexpr std::common_comparison_category_t...> std::operator<=3D>(const std::variant<_Types ...>&, const std::variant<_Types ...>&) [with _Types =3D {std::__cxx11::list >}]=E2=80=99 test.cpp:16:16: required from here /opt/gcc/git-snapshot/include/c++/11.0.1/variant:1218:5: required by the constraints of =E2=80=98template requires (three_way_comparable<_Types, std::partial_ordering> && ...) constexpr std::common_comparison_category_t...> std::operator<=3D>(const std::variant<_Types ...>&, const std::variant<_Types ...>&)=E2=80=99 cc1plus: error: satisfaction of atomic constraint =E2=80=98(three_way_comparable<_Types, std::partial_ordering> && ...) [with= _Types =3D {_Types ...}]=E2=80=99 depends on itself /opt/gcc/git-snapshot/include/c++/11.0.1/compare: In substitution of =E2=80=98template requires (three_way_comparable<_Types, std::partial_ordering> && ...) constexpr std::common_comparison_category_t...> std::operator<=3D>(const std::variant<_Types ...>&, const std::variant<_Types ...>&) [with _Types =3D {std::__cxx11::list >}]=E2=80=99: /opt/gcc/git-snapshot/include/c++/11.0.1/compare:884:52: required from =E2=80=98static constexpr bool std::__detail::_Synth3way::_S_noexcept(const= _Tp*, const _Up*) [with _Tp =3D Value; _Up =3D Value]=E2=80=99 /opt/gcc/git-snapshot/include/c++/11.0.1/compare:890:32: required from =E2=80=98constexpr auto std::__detail::_Synth3way::operator()(const _Tp&, c= onst _Up&) const requires requires{{std::__detail::_Synth3way::operator()::__t < std::__detail::_Synth3way::operator()::__u} -> decltype(auto) [requires std::__detail::__boolean_testable<, >];{std::__detail::_Synth3way::operator()::__u < std::__detail::_Synth3way::operator()::__t} -> decltype(auto) [requires std::__detail::__boolean_testable<, >];} [with _Tp =3D Value; = _Up =3D Value]=E2=80=99 /opt/gcc/git-snapshot/include/c++/11.0.1/compare:914:34: required by substitution of =E2=80=98template using __synth3way_t= =3D decltype (std::__detail::__synth3way(declval<_Tp&>(), declval<_Up&>())) [with _Tp =3D Value; _Up =3D Value]=E2=80=99 /opt/gcc/git-snapshot/include/c++/11.0.1/bits/stl_list.h:2030:5: required= by substitution of =E2=80=98template std::__detail::__synth3way_t<_T1> std::operator<=3D>(const std::__cxx11::list<_Tp, _Alloc>&, const std::__cxx11::list<_Tp, _Alloc>&) [= with _Tp =3D Value; _Alloc =3D std::allocator]=E2=80=99 /opt/gcc/git-snapshot/include/c++/11.0.1/concepts:306:10: required by substitution of =E2=80=98template requires (three_way_comparable<_Types, std::partial_ordering> && ...) constexpr std::common_comparison_category_t...> std::operator<=3D>(const std::variant<_Types ...>&, const std::variant<_Types ...>&) [with _Types =3D {std::__cxx11::list >}]=E2=80=99 test.cpp:16:16: required from here /opt/gcc/git-snapshot/include/c++/11.0.1/variant:1218:5: required by the constraints of =E2=80=98template requires (three_way_comparable<_Types, std::partial_ordering> && ...) constexpr std::common_comparison_category_t...> std::operator<=3D>(const std::variant<_Types ...>&, const std::variant<_Types ...>&)=E2=80=99 cc1plus: error: satisfaction of atomic constraint =E2=80=98(three_way_comparable<_Types, std::partial_ordering> && ...) [with= _Types =3D {_Types ...}]=E2=80=99 depends on itself /opt/gcc/git-snapshot/include/c++/11.0.1/compare: In substitution of =E2=80=98template requires (three_way_comparable<_Types, std::partial_ordering> && ...) constexpr std::common_comparison_category_t...> std::operator<=3D>(const std::variant<_Types ...>&, const std::variant<_Types ...>&) [with _Types =3D {std::__cxx11::list >}]=E2=80=99: /opt/gcc/git-snapshot/include/c++/11.0.1/compare:901:16: required from =E2=80=98constexpr auto std::__detail::_Synth3way::operator()(const _Tp&, c= onst _Up&) const requires requires{{std::__detail::_Synth3way::operator()::__t < std::__detail::_Synth3way::operator()::__u} -> decltype(auto) [requires std::__detail::__boolean_testable<, >];{std::__detail::_Synth3way::operator()::__u < std::__detail::_Synth3way::operator()::__t} -> decltype(auto) [requires std::__detail::__boolean_testable<, >];} [with _Tp =3D Value; = _Up =3D Value]=E2=80=99 /opt/gcc/git-snapshot/include/c++/11.0.1/compare:914:34: required by substitution of =E2=80=98template using __synth3way_t= =3D decltype (std::__detail::__synth3way(declval<_Tp&>(), declval<_Up&>())) [with _Tp =3D Value; _Up =3D Value]=E2=80=99 /opt/gcc/git-snapshot/include/c++/11.0.1/bits/stl_list.h:2030:5: required= by substitution of =E2=80=98template std::__detail::__synth3way_t<_T1> std::operator<=3D>(const std::__cxx11::list<_Tp, _Alloc>&, const std::__cxx11::list<_Tp, _Alloc>&) [= with _Tp =3D Value; _Alloc =3D std::allocator]=E2=80=99 /opt/gcc/git-snapshot/include/c++/11.0.1/concepts:306:10: required by substitution of =E2=80=98template requires (three_way_comparable<_Types, std::partial_ordering> && ...) constexpr std::common_comparison_category_t...> std::operator<=3D>(const std::variant<_Types ...>&, const std::variant<_Types ...>&) [with _Types =3D {std::__cxx11::list >}]=E2=80=99 test.cpp:16:16: required from here /opt/gcc/git-snapshot/include/c++/11.0.1/variant:1218:5: required by the constraints of =E2=80=98template requires (three_way_comparable<_Types, std::partial_ordering> && ...) constexpr std::common_comparison_category_t...> std::operator<=3D>(const std::variant<_Types ...>&, const std::variant<_Types ...>&)=E2=80=99 cc1plus: error: satisfaction of atomic constraint =E2=80=98(three_way_comparable<_Types, std::partial_ordering> && ...) [with= _Types =3D {_Types ...}]=E2=80=99 depends on itself /opt/gcc/git-snapshot/include/c++/11.0.1/compare: In substitution of =E2=80=98template requires (three_way_comparable<_Types, std::partial_ordering> && ...) constexpr std::common_comparison_category_t...> std::operator<=3D>(const std::variant<_Types ...>&, const std::variant<_Types ...>&) [with _Types =3D {std::__cxx11::list >}]=E2=80=99: /opt/gcc/git-snapshot/include/c++/11.0.1/compare:903:21: required from =E2=80=98constexpr auto std::__detail::_Synth3way::operator()(const _Tp&, c= onst _Up&) const requires requires{{std::__detail::_Synth3way::operator()::__t < std::__detail::_Synth3way::operator()::__u} -> decltype(auto) [requires std::__detail::__boolean_testable<, >];{std::__detail::_Synth3way::operator()::__u < std::__detail::_Synth3way::operator()::__t} -> decltype(auto) [requires std::__detail::__boolean_testable<, >];} [with _Tp =3D Value; = _Up =3D Value]=E2=80=99 /opt/gcc/git-snapshot/include/c++/11.0.1/compare:914:34: required by substitution of =E2=80=98template using __synth3way_t= =3D decltype (std::__detail::__synth3way(declval<_Tp&>(), declval<_Up&>())) [with _Tp =3D Value; _Up =3D Value]=E2=80=99 /opt/gcc/git-snapshot/include/c++/11.0.1/bits/stl_list.h:2030:5: required= by substitution of =E2=80=98template std::__detail::__synth3way_t<_T1> std::operator<=3D>(const std::__cxx11::list<_Tp, _Alloc>&, const std::__cxx11::list<_Tp, _Alloc>&) [= with _Tp =3D Value; _Alloc =3D std::allocator]=E2=80=99 /opt/gcc/git-snapshot/include/c++/11.0.1/concepts:306:10: required by substitution of =E2=80=98template requires (three_way_comparable<_Types, std::partial_ordering> && ...) constexpr std::common_comparison_category_t...> std::operator<=3D>(const std::variant<_Types ...>&, const std::variant<_Types ...>&) [with _Types =3D {std::__cxx11::list >}]=E2=80=99 test.cpp:16:16: required from here /opt/gcc/git-snapshot/include/c++/11.0.1/variant:1218:5: required by the constraints of =E2=80=98template requires (three_way_comparable<_Types, std::partial_ordering> && ...) constexpr std::common_comparison_category_t...> std::operator<=3D>(const std::variant<_Types ...>&, const std::variant<_Types ...>&)=E2=80=99 cc1plus: error: satisfaction of atomic constraint =E2=80=98(three_way_comparable<_Types, std::partial_ordering> && ...) [with= _Types =3D {_Types ...}]=E2=80=99 depends on itself=