https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67617
Bug ID: 67617 Summary: Non-standard const requirements imposed on associate container comparison objects Product: gcc Version: 4.8.4 Status: UNCONFIRMED Severity: normal Priority: P3 Component: libstdc++ Assignee: unassigned at gcc dot gnu.org Reporter: mdempsky at google dot com Target Milestone: --- This code appears to me to be conforming to the C++ standard, but it's rejected by G++/libstdc++: #include <set> struct compare { bool operator()(int a, int b); }; void func() { const std::set<int, compare> s; s.find(0); } because compare::operator() is not const qualified. N3690 [associative.reqmts]p2 says "The object of type Compare is called the comparison object of the container", and p3 talks about the requirements on behavior of a comparison object comp. However, none of the requirements seem to impose requirements on objects of type const Compare.