diff options
| author | Marshall Clow <mclow.lists@gmail.com> | 2013-08-07 20:48:48 +0000 |
|---|---|---|
| committer | Marshall Clow <mclow.lists@gmail.com> | 2013-08-07 20:48:48 +0000 |
| commit | 07186a7d2d1537c43d6fdaf3ec687f0667f5a952 (patch) | |
| tree | 9576ab926b3fe532be95dd721382854978616718 | |
| parent | 303e27d8ce2a51a38e3924537058a9416893720a (diff) | |
| download | bcm5719-llvm-07186a7d2d1537c43d6fdaf3ec687f0667f5a952.tar.gz bcm5719-llvm-07186a7d2d1537c43d6fdaf3ec687f0667f5a952.zip | |
N3644 support for <string> and <vector>
llvm-svn: 187909
| -rw-r--r-- | libcxx/include/iterator | 3 | ||||
| -rw-r--r-- | libcxx/test/containers/sequences/vector/iterators.pass.cpp | 13 | ||||
| -rw-r--r-- | libcxx/test/strings/basic.string/string.iterators/iterators.pass.cpp | 73 |
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 +} |

