summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarshall Clow <mclow.lists@gmail.com>2013-08-07 20:48:48 +0000
committerMarshall Clow <mclow.lists@gmail.com>2013-08-07 20:48:48 +0000
commit07186a7d2d1537c43d6fdaf3ec687f0667f5a952 (patch)
tree9576ab926b3fe532be95dd721382854978616718
parent303e27d8ce2a51a38e3924537058a9416893720a (diff)
downloadbcm5719-llvm-07186a7d2d1537c43d6fdaf3ec687f0667f5a952.tar.gz
bcm5719-llvm-07186a7d2d1537c43d6fdaf3ec687f0667f5a952.zip
N3644 support for <string> and <vector>
llvm-svn: 187909
-rw-r--r--libcxx/include/iterator3
-rw-r--r--libcxx/test/containers/sequences/vector/iterators.pass.cpp13
-rw-r--r--libcxx/test/strings/basic.string/string.iterators/iterators.pass.cpp73
3 files changed, 89 insertions, 0 deletions
diff --git a/libcxx/include/iterator b/libcxx/include/iterator
index 4989d8b7a0d..858510d1562 100644
--- a/libcxx/include/iterator
+++ b/libcxx/include/iterator
@@ -1093,6 +1093,9 @@ private:
iterator_type __i;
public:
_LIBCPP_INLINE_VISIBILITY __wrap_iter() _NOEXCEPT
+#if _LIBCPP_STD_VER > 11
+ : __i{}
+#endif
{
#if _LIBCPP_DEBUG_LEVEL >= 2
__get_db()->__insert_i(this);
diff --git a/libcxx/test/containers/sequences/vector/iterators.pass.cpp b/libcxx/test/containers/sequences/vector/iterators.pass.cpp
index fbd40298d19..8e0d482f020 100644
--- a/libcxx/test/containers/sequences/vector/iterators.pass.cpp
+++ b/libcxx/test/containers/sequences/vector/iterators.pass.cpp
@@ -135,4 +135,17 @@ int main()
assert(j->first == 3);
}
#endif
+#if _LIBCPP_STD_VER > 11
+ { // N3664 testing
+ typedef std::vector<int> C;
+ C::iterator ii1{}, ii2{};
+ C::iterator ii4 = ii1;
+ C::const_iterator cii{};
+ assert ( ii1 == ii2 );
+ assert ( ii1 == ii4 );
+ assert ( ii1 == cii );
+ assert ( !(ii1 != ii2 ));
+ assert ( !(ii1 != cii ));
+ }
+#endif
}
diff --git a/libcxx/test/strings/basic.string/string.iterators/iterators.pass.cpp b/libcxx/test/strings/basic.string/string.iterators/iterators.pass.cpp
new file mode 100644
index 00000000000..ff896094dbd
--- /dev/null
+++ b/libcxx/test/strings/basic.string/string.iterators/iterators.pass.cpp
@@ -0,0 +1,73 @@
+//===----------------------------------------------------------------------===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is dual licensed under the MIT and the University of Illinois Open
+// Source Licenses. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+// <string>
+
+// iterator begin();
+// iterator end();
+// const_iterator begin() const;
+// const_iterator end() const;
+// const_iterator cbegin() const;
+// const_iterator cend() const;
+
+#include <string>
+#include <cassert>
+
+int main()
+{
+#if _LIBCPP_STD_VER > 11
+ { // N3664 testing
+ typedef std::string C;
+ C::iterator ii1{}, ii2{};
+ C::iterator ii4 = ii1;
+ C::const_iterator cii{};
+ assert ( ii1 == ii2 );
+ assert ( ii1 == ii4 );
+ assert ( ii1 == cii );
+ assert ( !(ii1 != ii2 ));
+ assert ( !(ii1 != cii ));
+ }
+
+ { // N3664 testing
+ typedef std::wstring C;
+ C::iterator ii1{}, ii2{};
+ C::iterator ii4 = ii1;
+ C::const_iterator cii{};
+ assert ( ii1 == ii2 );
+ assert ( ii1 == ii4 );
+ assert ( ii1 == cii );
+ assert ( !(ii1 != ii2 ));
+ assert ( !(ii1 != cii ));
+ }
+
+ { // N3664 testing
+ typedef std::u16string C;
+ C::iterator ii1{}, ii2{};
+ C::iterator ii4 = ii1;
+ C::const_iterator cii{};
+ assert ( ii1 == ii2 );
+ assert ( ii1 == ii4 );
+ assert ( ii1 == cii );
+ assert ( !(ii1 != ii2 ));
+ assert ( !(ii1 != cii ));
+ }
+
+ { // N3664 testing
+ typedef std::u32string C;
+ C::iterator ii1{}, ii2{};
+ C::iterator ii4 = ii1;
+ C::const_iterator cii{};
+ assert ( ii1 == ii2 );
+ assert ( ii1 == ii4 );
+ assert ( ii1 == cii );
+ assert ( !(ii1 != ii2 ));
+ assert ( !(ii1 != cii ));
+ }
+#endif
+}
OpenPOWER on IntegriCloud