Boost logo

Boost Users :

From: Andrea Olgiati (andrea.olgiati_at_[hidden])
Date: 2005-06-13 07:07:21


Folks,

I've encountered a problem whilst compiling the following program, and I
can't quite figure out why it shouldn't work. Whilst compiling usign
boost 1.32.0 and gcc 3.3.4, I get

cannot convert `boost::detail::edge_desc_impl<boost::bidirectional_tag, size_t>' to `int'
   for argument `2' to `const T& get(const T*, int) [with T = int]'

I believe this is saying that edge descriptors cannot be used as indices
into a property map (that is, "wm"). Why is this different from vertex
descriptors, which are accepted as indices into "p" and "dist"?

Any help appreciated.

Thanks,
Andrea

#include <boost/graph/graph_traits.hpp>
#include <boost/graph/adjacency_list.hpp>
#include <boost/graph/bellman_ford_shortest_paths.hpp>

int
main ()
{
  typedef boost::adjacency_list < boost::vecS, boost::vecS, boost::bidirectionalS > Graph;

  Graph G;

  std::vector < int > wm;
  std::vector < boost::graph_traits < Graph >::vertex_descriptor > p;
  std::vector < int > dist;

  boost::bellman_ford_shortest_paths (G, boost::num_vertices(G),
                               &wm[0], &p[0], &dist[0],
                               boost::closed_plus < int >(),
                               std::less < int >(),
                               boost::default_bellman_visitor ());
  return 0;
}



Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net