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:
@@ -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());
|
||||
}
|
||||
|
Reference in New Issue
Block a user