I have updated Boost.Graph to use the new iterator adaptors, except
for the LEDA and standford graph support stuff: I lack the neccessary
headers to test it.

Some of the bugs uncovered by CWPro8 are serious, and some don't even
have a resolution that I can see.  For example:

     * vector_as_graph.hpp - ADL problems.  This should be fairly
     obvious if you're familiar with ADL: on a conforming compiler,
     the unqualified calls used in Boost.Graph (e.g. vertices(g))
     won't find the definitions of vertices() in namespace boost when
     g comes from namespace std::.  One solution I can come up with is
     to have the library call

          vertices_<G>::get(g)

     whose default implementation is simply 

          return vertices(g)

     and then specialize 

          vertices_<std::vector<T,A> >

     to do what we want.  The alternative is to insert 

          using boost::vertices;

     etc., before each unqualified call.  Ick.  Probably a better
     approach is simply to provide a vector adaptor class template:

         template<class V>
         struct vector_graph
         {
             vector_graph(V const& v) : m_v(v) {}
             V const& m_v;
             ...
         };

         template <class V>
         vector_graph<V> make_vector_graph(V const& v);


    * Lots of missing std:: qualifications.  I added them, but older
      compilers may break now.  Please seek appropriate workarounds.

    * This one I'd just like someone to check to make sure I've done
      the right thing:

===================================================================
RCS file: /cvsroot/boost/boost/boost/graph/isomorphism.hpp,v
retrieving revision 1.26
diff -u -r1.26 isomorphism.hpp
--- boost/graph/isomorphism.hpp 14 Aug 2002 21:17:59 -0000      1.26
+++ boost/graph/isomorphism.hpp 11 Jul 2003 21:10:48 -0000
@@ -186,8 +186,14 @@
                 f[kp1] = u;
                 in_S[u] = true;
                 num_edges_on_k = 0;
-                if (match(iter, dfs_num_k + 1));
-                return true;
+                
+                if (match(iter, dfs_num_k + 1))
+#if 0
+                    // dwa 2003/7/11 -- this *HAS* to be a bug!
+                    ;
+#endif 
+                    return true;
+                    
                 in_S[u] = false;
               }
             }

-- 
Dave Abrahams
Boost Consulting
www.boost-consulting.com

_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost

Reply via email to