Update of /cvsroot/boost/boost/boost/xpressive
In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv11421

Modified Files:
        match_results.hpp 
Log Message:
changes required by gcc-4.3 and ConceptGCC

Index: match_results.hpp
===================================================================
RCS file: /cvsroot/boost/boost/boost/xpressive/match_results.hpp,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -d -r1.16 -r1.17
--- match_results.hpp   17 Apr 2007 07:23:38 -0000      1.16
+++ match_results.hpp   28 Apr 2007 01:42:16 -0000      1.17
@@ -20,6 +20,7 @@
 #include <utility>
 #include <iterator>
 #include <typeinfo>
+#include <boost/config.hpp>
 #include <boost/assert.hpp>
 #include <boost/integer.hpp>
 #include <boost/mpl/assert.hpp>
@@ -97,7 +98,7 @@
 //
 template<typename OutputIterator, typename Char>
 struct case_converting_iterator
-  : std::iterator<std::output_iterator_tag, Char, void, void, void>
+  : std::iterator<std::output_iterator_tag, Char, void, void, 
case_converting_iterator<OutputIterator, Char> >
 {
     case_converting_iterator(OutputIterator const &out, traits<Char> const 
*traits)
       : out_(out)
@@ -183,8 +184,9 @@
 ///////////////////////////////////////////////////////////////////////////////
 // noop_output_iterator
 //
+template<typename Char>
 struct noop_output_iterator
-  : std::iterator<std::output_iterator_tag, void, void, void, void>
+  : std::iterator<std::output_iterator_tag, Char, void, void, 
noop_output_iterator<Char> >
 {
     noop_output_iterator &operator ++()
     {
@@ -201,14 +203,13 @@
         return *this;
     }
 
-    template<typename T>
-    noop_output_iterator &operator =(T const &)
+    noop_output_iterator &operator =(Char const &)
     {
         return *this;
     }
 };
 
-} // namespace detail
+} // detail
 
 ///////////////////////////////////////////////////////////////////////////////
 // match_results
@@ -703,7 +704,7 @@
     OutputIterator format_all_impl_(ForwardIterator &cur, ForwardIterator end, 
OutputIterator out, bool metacolon = false) const
     {
         int max = 0, sub = 0;
-        detail::noop_output_iterator noop;
+        detail::noop_output_iterator<char_type> noop;
 
         while(cur != end)
         {
@@ -935,6 +936,7 @@
             break;
 
         default:
+            // BUGBUG what about backreferences like \12 ?
             if(0 < this->traits_->value(ch, 10))
             {
                 int sub = this->traits_->value(ch, 10);
@@ -986,4 +988,24 @@
 
 }} // namespace boost::xpressive
 
+#ifdef BOOST_HAS_CONCEPTS
+// Better living through concepts. :-P
+namespace std
+{
+    template<typename Iter_, typename Char_>
+    concept_map OutputIterator<
+        boost::xpressive::detail::case_converting_iterator<Iter_, Char_>
+      , Char_
+    >
+    {};
+
+    template<typename Char_>
+    concept_map OutputIterator<
+        boost::xpressive::detail::noop_output_iterator<Char_>
+      , Char_
+    >
+    {};
+}
+#endif
+
 #endif


-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
Boost-cvs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/boost-cvs

Reply via email to