1
0
mirror of https://github.com/Kitware/CMake.git synced 2025-10-18 08:51:52 +08:00

cmAlgorithms: Preserve const-ness in cmRemoveDuplicates range signature

The pattern `vec.erase(cmRemoveDuplicates(vec), vec.end())` fails to
compile with GCC 4.8's libstdc++ if `cmRemoveDuplicates` returns a
`const_iterator` because `end()` returns an `iterator`.  Overload
`cmRemoveDuplicates` to return an iterator type matching the const-ness
of its argument.
This commit is contained in:
Brad King
2021-09-03 09:36:40 -04:00
parent 881e76e7c5
commit 6e2f4029c0

View File

@@ -133,7 +133,13 @@ ForwardIterator cmRemoveDuplicates(ForwardIterator first, ForwardIterator last)
}
template <typename Range>
typename Range::const_iterator cmRemoveDuplicates(Range& r)
typename Range::iterator cmRemoveDuplicates(Range& r)
{
return cmRemoveDuplicates(r.begin(), r.end());
}
template <typename Range>
typename Range::const_iterator cmRemoveDuplicates(Range const& r)
{
return cmRemoveDuplicates(r.begin(), r.end());
}