-
Notifications
You must be signed in to change notification settings - Fork 1.6k
Open
Labels
Description
Lines 708 to 716 in 6314950
| void _Erase_dupes_if_not_multi() { | |
| if constexpr (_IsUnique) { | |
| const auto _Equivalent = [this](const _Kty& _Lhs, const _Kty& _Rhs) { | |
| return !_Compare(_Lhs, _Rhs) && !_Compare(_Rhs, _Lhs); | |
| }; | |
| const auto _End = _Mycont.end(); | |
| _Mycont.erase(_STD unique(_Mycont.begin(), _End, _Equivalent), _End); | |
| } | |
| } |
This could have been vectorized unique, but the predicate is on the way.
For less<>, less<T>, ranges::less predicate and for usual types, the equivalence can be replaced with binary equality, and the predicate can be omitted.
In the case of predicate-less unique call for normal underlying container (like, not deque) the unique will be vectorized using already existing code path.
For flat_map this could work in principle too, but would effectively require implementing vector algorithms in headers, and would be way more tedious, so that's probably not what we would do, at least in a near future.