https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90097
Bug ID: 90097 Summary: [P0732] Error while comparing 2 non-type parameters in constraints Product: gcc Version: 9.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: mateusz.pusz at gmail dot com Target Milestone: --- Hi, Compiling the code provided below with the following options produces an error: "-std=c++2a -fconcepts -Wall -Wextra" ``` struct B { int value; // auto operator<=>(const base_dimension&) = default; friend constexpr bool operator==(const B& lhs, const B& rhs) noexcept { return lhs.value == rhs.value; } }; //works template<int i1, int i2> requires (i1 == i2) struct A {}; // works template<B b1, B b2, bool BB = (b1 == b2)> struct C { static_assert(b1 == b2); }; // error template<B b1, B b2> requires (b1 == b2) struct D {}; ``` Error: <source>:24:16: error: constraint 'operator==(((const B)b1), ((const B)b2))', uses overloaded operator 24 | requires (b1 == b2) | ~~~~^~~~~~ I am not sure what is the offcial suport -fconcepts and if that problem can be ignored for now or not so I decided to report it anyway ;-) See also here: https://godbolt.org/z/PLkvVm. Thanks Mat