Boost logo

Boost :

From: David Abrahams (dave_at_[hidden])
Date: 2003-07-11 16:25:44


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

Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk