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.


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

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;