[libcxx-commits] [libcxx] 9fda213 - [libcxx] Qualify make_move_iterator in vector::insert for input iterators
Louis Dionne via libcxx-commits
libcxx-commits at lists.llvm.org
Tue Feb 11 02:00:57 PST 2020
Author: Louis Dionne
Date: 2020-02-11T11:00:45+01:00
New Revision: 9fda213d625a1f39954a8ba5311e1483d9d0db3e
URL: https://github.com/llvm/llvm-project/commit/9fda213d625a1f39954a8ba5311e1483d9d0db3e
DIFF: https://github.com/llvm/llvm-project/commit/9fda213d625a1f39954a8ba5311e1483d9d0db3e.diff
LOG: [libcxx] Qualify make_move_iterator in vector::insert for input iterators
Unqualified calls to make_move_iterator in the vector::insert overload
for input iterators lead to ADL issues: https://gcc.godbolt.org/z/bmcNbh
Patch by Logan Smith.
Differential Revision: https://reviews.llvm.org/D74290
Added:
Modified:
libcxx/include/vector
libcxx/test/std/containers/sequences/vector/vector.modifiers/insert_iter_iter_iter.pass.cpp
Removed:
################################################################################
diff --git a/libcxx/include/vector b/libcxx/include/vector
index 8366bb5d11e8..af96bffb069c 100644
--- a/libcxx/include/vector
+++ b/libcxx/include/vector
@@ -1956,8 +1956,8 @@ vector<_Tp, _Allocator>::insert(const_iterator __position, _InputIterator __firs
#endif // _LIBCPP_NO_EXCEPTIONS
}
__p = _VSTD::rotate(__p, __old_last, this->__end_);
- insert(__make_iter(__p), make_move_iterator(__v.begin()),
- make_move_iterator(__v.end()));
+ insert(__make_iter(__p), _VSTD::make_move_iterator(__v.begin()),
+ _VSTD::make_move_iterator(__v.end()));
return begin() + __off;
}
diff --git a/libcxx/test/std/containers/sequences/vector/vector.modifiers/insert_iter_iter_iter.pass.cpp b/libcxx/test/std/containers/sequences/vector/vector.modifiers/insert_iter_iter_iter.pass.cpp
index 74cb612aab0f..413030dce600 100644
--- a/libcxx/test/std/containers/sequences/vector/vector.modifiers/insert_iter_iter_iter.pass.cpp
+++ b/libcxx/test/std/containers/sequences/vector/vector.modifiers/insert_iter_iter_iter.pass.cpp
@@ -21,6 +21,11 @@
#include "min_allocator.h"
#include "asan_testing.h"
+namespace adl {
+struct S {};
+void make_move_iterator(S*) {}
+}
+
int main(int, char**)
{
{
@@ -172,5 +177,10 @@ int main(int, char**)
}
#endif
+ {
+ std::vector<adl::S> s;
+ s.insert(s.end(), input_iterator<adl::S*>(), input_iterator<adl::S*>());
+ }
+
return 0;
}
More information about the libcxx-commits
mailing list