[libcxx] r197013 - Merging r-196058:

Bill Wendling isanbard at gmail.com
Tue Dec 10 23:25:36 PST 2013


Author: void
Date: Wed Dec 11 01:25:36 2013
New Revision: 197013

URL: http://llvm.org/viewvc/llvm-project?rev=197013&view=rev
Log:
Merging r-196058:
------------------------------------------------------------------------
r196058 | marshall | 2013-12-01 19:24:33 -0800 (Sun, 01 Dec 2013) | 1 line

Fix for PRPR17934; based on a fix suggested by Peter Sommerlad
------------------------------------------------------------------------

Modified:
    libcxx/branches/release_34/   (props changed)
    libcxx/branches/release_34/include/iterator
    libcxx/branches/release_34/test/containers/sequences/array/iterators.pass.cpp
    libcxx/branches/release_34/test/iterators/iterator.range/begin-end.pass.cpp

Propchange: libcxx/branches/release_34/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Dec 11 01:25:36 2013
@@ -1,2 +1,2 @@
 /libcxx/branches/apple:136569-137939
-/libcxx/trunk:195136,195143,195693,196058
+/libcxx/trunk:195136,195143,195693

Modified: libcxx/branches/release_34/include/iterator
URL: http://llvm.org/viewvc/llvm-project/libcxx/branches/release_34/include/iterator?rev=197013&r1=197012&r2=197013&view=diff
==============================================================================
--- libcxx/branches/release_34/include/iterator (original)
+++ libcxx/branches/release_34/include/iterator Wed Dec 11 01:25:36 2013
@@ -1387,22 +1387,6 @@ operator+(typename __wrap_iter<_Iter>::d
 
 #if !defined(_LIBCPP_HAS_NO_RVALUE_REFERENCES) && !defined(_LIBCPP_HAS_NO_TRAILING_RETURN)
 
-template <class _Tp, size_t _Np>
-inline _LIBCPP_INLINE_VISIBILITY
-_Tp*
-begin(_Tp (&__array)[_Np])
-{
-    return __array;
-}
-
-template <class _Tp, size_t _Np>
-inline _LIBCPP_INLINE_VISIBILITY
-_Tp*
-end(_Tp (&__array)[_Np])
-{
-    return __array + _Np;
-}
-
 template <class _Cp>
 inline _LIBCPP_INLINE_VISIBILITY
 auto
@@ -1437,46 +1421,18 @@ end(const _Cp& __c) -> decltype(__c.end(
 
 #if _LIBCPP_STD_VER > 11
 
-template <class _Tp, size_t _Np>
-inline _LIBCPP_INLINE_VISIBILITY
-reverse_iterator<_Tp*> rbegin(_Tp (&__array)[_Np])
-{
-    return reverse_iterator<_Tp*>(__array + _Np);
-}
-
-template <class _Tp, size_t _Np>
-inline _LIBCPP_INLINE_VISIBILITY
-reverse_iterator<_Tp*> rend(_Tp (&__array)[_Np])
-{
-    return reverse_iterator<_Tp*>(__array);
-}
-
-template <class _Ep>
-inline _LIBCPP_INLINE_VISIBILITY
-reverse_iterator<const _Ep*> rbegin(initializer_list<_Ep> __il)
-{
-    return reverse_iterator<const _Ep*>(__il.end());
-}
-
-template <class _Ep>
-inline _LIBCPP_INLINE_VISIBILITY
-reverse_iterator<const _Ep*> rend(initializer_list<_Ep> __il)
-{
-    return reverse_iterator<const _Ep*>(__il.begin());
-}
-
 template <class _Cp>
 inline _LIBCPP_INLINE_VISIBILITY
 auto cbegin(const _Cp& __c) -> decltype(begin(__c))
 {
-    return _VSTD::begin(__c);
+    return __c.begin();
 }
 
 template <class _Cp>
 inline _LIBCPP_INLINE_VISIBILITY
 auto cend(const _Cp& __c) -> decltype(end(__c))
 {
-    return _VSTD::end(__c);
+    return __c.end();
 }
 
 template <class _Cp>
@@ -1560,6 +1516,53 @@ end(const _Cp& __c)
 
 #endif  // !defined(_LIBCPP_HAS_NO_RVALUE_REFERENCES) && !defined(_LIBCPP_HAS_NO_TRAILING_RETURN)
 
+template <class _Tp, size_t _Np>
+inline _LIBCPP_INLINE_VISIBILITY
+_Tp*
+begin(_Tp (&__array)[_Np])
+{
+    return __array;
+}
+
+template <class _Tp, size_t _Np>
+inline _LIBCPP_INLINE_VISIBILITY
+_Tp*
+end(_Tp (&__array)[_Np])
+{
+    return __array + _Np;
+}
+
+#if _LIBCPP_STD_VER > 11
+template <class _Tp, size_t _Np>
+inline _LIBCPP_INLINE_VISIBILITY
+reverse_iterator<_Tp*> rbegin(_Tp (&__array)[_Np])
+{
+    return reverse_iterator<_Tp*>(__array + _Np);
+}
+
+template <class _Tp, size_t _Np>
+inline _LIBCPP_INLINE_VISIBILITY
+reverse_iterator<_Tp*> rend(_Tp (&__array)[_Np])
+{
+    return reverse_iterator<_Tp*>(__array);
+}
+
+template <class _Ep>
+inline _LIBCPP_INLINE_VISIBILITY
+reverse_iterator<const _Ep*> rbegin(initializer_list<_Ep> __il)
+{
+    return reverse_iterator<const _Ep*>(__il.end());
+}
+
+template <class _Ep>
+inline _LIBCPP_INLINE_VISIBILITY
+reverse_iterator<const _Ep*> rend(initializer_list<_Ep> __il)
+{
+    return reverse_iterator<const _Ep*>(__il.begin());
+}
+
+#endif
+
 _LIBCPP_END_NAMESPACE_STD
 
 #endif  // _LIBCPP_ITERATOR

Modified: libcxx/branches/release_34/test/containers/sequences/array/iterators.pass.cpp
URL: http://llvm.org/viewvc/llvm-project/libcxx/branches/release_34/test/containers/sequences/array/iterators.pass.cpp?rev=197013&r1=197012&r2=197013&view=diff
==============================================================================
--- libcxx/branches/release_34/test/containers/sequences/array/iterators.pass.cpp (original)
+++ libcxx/branches/release_34/test/containers/sequences/array/iterators.pass.cpp Wed Dec 11 01:25:36 2013
@@ -50,20 +50,11 @@ int main()
         assert ( !(ii1 != ii2 ));
         assert ( !(ii1 != cii ));
 
-        C c;
-        assert ( c.begin()   == std::begin(c));
-        assert ( c.cbegin()  == std::cbegin(c));
-        assert ( c.rbegin()  == std::rbegin(c));
-        assert ( c.crbegin() == std::crbegin(c));
-        assert ( c.end()     == std::end(c));
-        assert ( c.cend()    == std::cend(c));
-        assert ( c.rend()    == std::rend(c));
-        assert ( c.crend()   == std::crend(c));
-        
-        assert ( std::begin(c)   != std::end(c));
-        assert ( std::rbegin(c)  != std::rend(c));
-        assert ( std::cbegin(c)  != std::cend(c));
-        assert ( std::crbegin(c) != std::crend(c));
+//         C c;
+//         assert ( ii1 != c.cbegin());
+//         assert ( cii != c.begin());
+//         assert ( cii != c.cend());
+//         assert ( ii1 != c.end());
         }
         {
         typedef std::array<int, 0> C;
@@ -77,20 +68,11 @@ int main()
         assert ( !(ii1 != ii2 ));
         assert ( !(ii1 != cii ));
 
-        C c;
-        assert ( c.begin()   == std::begin(c));
-        assert ( c.cbegin()  == std::cbegin(c));
-        assert ( c.rbegin()  == std::rbegin(c));
-        assert ( c.crbegin() == std::crbegin(c));
-        assert ( c.end()     == std::end(c));
-        assert ( c.cend()    == std::cend(c));
-        assert ( c.rend()    == std::rend(c));
-        assert ( c.crend()   == std::crend(c));
-
-        assert ( std::begin(c)   == std::end(c));
-        assert ( std::rbegin(c)  == std::rend(c));
-        assert ( std::cbegin(c)  == std::cend(c));
-        assert ( std::crbegin(c) == std::crend(c));
+//         C c;
+//         assert ( ii1 != c.cbegin());
+//         assert ( cii != c.begin());
+//         assert ( cii != c.cend());
+//         assert ( ii1 != c.end());
         }
     }
 #endif

Modified: libcxx/branches/release_34/test/iterators/iterator.range/begin-end.pass.cpp
URL: http://llvm.org/viewvc/llvm-project/libcxx/branches/release_34/test/iterators/iterator.range/begin-end.pass.cpp?rev=197013&r1=197012&r2=197013&view=diff
==============================================================================
--- libcxx/branches/release_34/test/iterators/iterator.range/begin-end.pass.cpp (original)
+++ libcxx/branches/release_34/test/iterators/iterator.range/begin-end.pass.cpp Wed Dec 11 01:25:36 2013
@@ -52,7 +52,6 @@ void test_const_container( const std::in
     assert ( std::end(c)     == c.end());
 #if _LIBCPP_STD_VER > 11
 //  initializer_list doesn't have cbegin/cend/rbegin/rend
-//	but std::cbegin(),etc work (b/c they're general fn templates)
 //     assert ( std::cbegin(c)  == c.cbegin());
 //     assert ( std::cbegin(c)  != c.cend());
 //     assert ( std::cend(c)    == c.cend());





More information about the cfe-commits mailing list