https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120384
Bug ID: 120384
Summary: [12/13/14/15/16] _BinaryPredicateConcept checks in
std::unique_copy are wrong
Product: gcc
Version: 16.0
Status: UNCONFIRMED
Keywords: rejects-valid
Severity: normal
Priority: P3
Component: libstdc++
Assignee: unassigned at gcc dot gnu.org
Reporter: redi at gcc dot gnu.org
Target Milestone: ---
#define _GLIBCXX_CONCEPT_CHECKS 1
#include <algorithm>
void uniq(const int* first, const int* last, int* out)
{
std::unique_copy(first, last, out);
}
This valid code fails to compile with:
/usr/include/c++/14/bits/predefined_ops.h:117:16: error: invalid type argument
of unary ‘*’ (have ‘int’)
117 | { return *__it1 == *__it2; }
| ^~~~~~
/usr/include/c++/14/bits/predefined_ops.h:117:26: error: invalid type argument
of unary ‘*’ (have ‘int’)
117 | { return *__it1 == *__it2; }
| ^~~~~~
This was broken by r0-125454-gea89b2482f97aa