Everything under [re.results]

llvm-svn: 111074
diff --git a/libcxx/test/re/iterators.h b/libcxx/test/re/iterators.h
index 85332ac..8ca5e88 100644
--- a/libcxx/test/re/iterators.h
+++ b/libcxx/test/re/iterators.h
@@ -4,6 +4,32 @@
 #include <iterator>
 
 template <class It>
+class output_iterator
+{
+    It it_;
+
+    template <class U> friend class output_iterator;
+public:
+    typedef          std::output_iterator_tag                  iterator_category;
+    typedef typename std::iterator_traits<It>::value_type      value_type;
+    typedef typename std::iterator_traits<It>::difference_type difference_type;
+    typedef It                                                 pointer;
+    typedef typename std::iterator_traits<It>::reference       reference;
+
+    It base() const {return it_;}
+
+    explicit output_iterator(It it) : it_(it) {}
+    template <class U>
+        output_iterator(const output_iterator<U>& u) :it_(u.it_) {}
+
+    reference operator*() const {return *it_;}
+
+    output_iterator& operator++() {++it_; return *this;}
+    output_iterator operator++(int)
+        {output_iterator tmp(*this); ++(*this); return tmp;}
+};
+
+template <class It>
 class input_iterator
 {
     It it_;