Added debug tests for indexing, pop_back and both forms of erase. Added an improved error message for erasing a single element with end().
llvm-svn: 177929
Cr-Mirrored-From: sso://chromium.googlesource.com/_direct/external/github.com/llvm/llvm-project
Cr-Mirrored-Commit: ea1bbbd1359fbacd5bd874baf590a5c1f08429b5
diff --git a/include/vector b/include/vector
index d9c5c2f..11d9a1b 100644
--- a/include/vector
+++ b/include/vector
@@ -1550,6 +1550,8 @@
"vector::erase(iterator) called with an iterator not"
" referring to this vector");
#endif
+ _LIBCPP_ASSERT(__position != end(),
+ "vector::erase(iterator) called with a non-dereferenceable iterator");
pointer __p = const_cast<pointer>(&*__position);
iterator __r = __make_iter(__p);
this->__destruct_at_end(_VSTD::move(__p + 1, this->__end_, __p));