diff options
| author | Marshall Clow <mclow.lists@gmail.com> | 2014-03-11 17:16:17 +0000 |
|---|---|---|
| committer | Marshall Clow <mclow.lists@gmail.com> | 2014-03-11 17:16:17 +0000 |
| commit | ef3d68009382d2888a397632aaa24c6c0a975525 (patch) | |
| tree | c0848e658b6df1fa353d41fc445f90d45e312ff1 /libcxx/test | |
| parent | bf678e82e12dff0d5c9c0187fc75443a913fc2eb (diff) | |
| download | bcm5719-llvm-ef3d68009382d2888a397632aaa24c6c0a975525.tar.gz bcm5719-llvm-ef3d68009382d2888a397632aaa24c6c0a975525.zip | |
Implement LWG 2360: 'reverse_iterator::operator*() is unimplementable'. Note that this is a (small) behavior change in the library. Reverse iterators whose base iterators' operator* return references to 'within themselves' have been sacrificed to the greater goal of avoiding data races.
llvm-svn: 203587
Diffstat (limited to 'libcxx/test')
2 files changed, 5 insertions, 43 deletions
diff --git a/libcxx/test/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.op.star/op_star.pass.cpp b/libcxx/test/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.op.star/op_star.pass.cpp index 7055e27bb24..7a7759843ee 100644 --- a/libcxx/test/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.op.star/op_star.pass.cpp +++ b/libcxx/test/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.op.star/op_star.pass.cpp @@ -15,6 +15,8 @@ // Be sure to respect LWG 198: // http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-defects.html#198 +// LWG 198 was superseded by LWG 2360 +// http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-defects.html#2360 #include <iterator> #include <cassert> @@ -31,26 +33,6 @@ public: }; template <class It> -class weird_iterator -{ - It it_; -public: - typedef It value_type; - typedef std::bidirectional_iterator_tag iterator_category; - typedef std::ptrdiff_t difference_type; - typedef It* pointer; - typedef It& reference; - - weird_iterator() {} - explicit weird_iterator(It it) : it_(it) {} - ~weird_iterator() {it_ = It();} - - reference operator*() {return it_;} - - weird_iterator& operator--() {return *this;} -}; - -template <class It> void test(It i, typename std::iterator_traits<It>::value_type x) { @@ -60,7 +42,6 @@ test(It i, typename std::iterator_traits<It>::value_type x) int main() { - test(weird_iterator<A>(A()), A()); A a; test(&a+1, A()); } diff --git a/libcxx/test/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.opref/op_arrow.pass.cpp b/libcxx/test/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.opref/op_arrow.pass.cpp index fc57deab678..efbdf1406c9 100644 --- a/libcxx/test/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.opref/op_arrow.pass.cpp +++ b/libcxx/test/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.opref/op_arrow.pass.cpp @@ -15,6 +15,9 @@ // Be sure to respect LWG 198: // http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-defects.html#198 +// LWG 198 was superseded by LWG 2360 +// http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-defects.html#2360 + #include <iterator> #include <list> @@ -34,27 +37,6 @@ public: }; template <class It> -class weird_iterator -{ - It it_; -public: - typedef It value_type; - typedef std::bidirectional_iterator_tag iterator_category; - typedef std::ptrdiff_t difference_type; - typedef It* pointer; - typedef It& reference; - - weird_iterator() {} - explicit weird_iterator(It it) : it_(it) {} - ~weird_iterator() {it_ = It();} - - reference operator*() {return it_;} - pointer operator->() {return &it_;} - - weird_iterator& operator--() {return *this;} -}; - -template <class It> void test(It i, typename std::iterator_traits<It>::value_type x) { @@ -79,7 +61,6 @@ public: int main() { - test(weird_iterator<A>(A()), A()); A a; test(&a+1, A()); |

