https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90287
Bug ID: 90287 Summary: [concepts] bogus error on overload failure inside requires-expression Product: gcc Version: 9.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: redbeard0531 at gmail dot com Target Milestone: --- https://godbolt.org/z/30Cf6s #include <string> template <typename T, typename U> constexpr inline bool isAddable = requires(const T& lhs, const U& rhs) { lhs + rhs; }; auto x = isAddable<int, std::string>; <source>: In instantiation of 'constexpr const bool isAddable<int, std::__cxx11::basic_string<char> >': <source>:13:10: required from here <source>:10:10: error: no match for 'operator+' (operand types are 'const int' and 'const std::__cxx11::basic_string<char>') 10 | lhs + rhs ; | ~~~~^~~~~ [snip rest of wall-o-errors] If I make isAddable a concept, it correctly evaluates to false, but I would expect requires-expressions to also work when assigned to a constexpr bool.