The new grid_graph.hpp header gets me a little farther.

The trivial program complies when I use the grid_graph.hpp (r63333) version you pointed me too.

I still can't compile my weighted_grid graph program with the new grid_graph header, but I do think I'm getting further along.  After making various minor changes (documented on github), I am trying to compile

  dimension_array dimensions = { {3, 4} };
  weighted_grid g(dimensions);
  vertex_descriptor source = vertex(0, g), goal = vertex(3, g);
  astar_search(g,
               source,
               euclidean_heuristic(goal),
               visitor(astar_goal_visitor(goal)) );

The top of the error spew looks like this

g++ -g -I/opt/local/include   -c -o main.o main.cpp
/opt/local/include/boost/graph/named_function_params.hpp: In static member function ‘static typename boost::detail::choose_default_param::bind_<P, Graph, Tag>::const_result_type boost::detail::choose_default_param::const_apply(const P&, const Graph&, Tag) [with P = boost::detail::error_property_not_found, Graph = boost::weighted_grid, Tag = boost::vertex_index_t]’:
/opt/local/include/boost/graph/named_function_params.hpp:304:   instantiated from ‘typename boost::detail::choose_pmap_helper<Param, Graph, Tag>::const_result_type boost::choose_const_pmap(const Param&, const Graph&, PropertyTag) [with Param = boost::detail::error_property_not_found, Graph = boost::weighted_grid, PropertyTag = boost::vertex_index_t]’
/opt/local/include/boost/graph/astar_search.hpp:372:   instantiated from ‘void boost::astar_search(VertexListGraph&, typename boost::graph_traits<G>::vertex_descriptor, AStarHeuristic, const boost::bgl_named_params<P, T, R>&) [with VertexListGraph = boost::weighted_grid, AStarHeuristic = boost::euclidean_heuristic, P = boost::astar_goal_visitor, T = boost::graph_visitor_t, R = boost::no_property]’
main.cpp:23:   instantiated from here
/opt/local/include/boost/graph/named_function_params.hpp:253: error: conversion from ‘boost::grid_graph_index_map<boost::grid_graph<2ul, size_t, size_t>, boost::array<size_t, 2ul>, size_t>’ to non-scalar type ‘boost::typed_identity_property_map<size_t>’ requested

The named_function_params.hpp is calling get(), I think to acquire a vertex_index_map.  The default vertex_index_map is being created incorrectly, but I can't figure out how.

Note that I can acquire and use the vertex index.  For example, the following call in main() function

  get(vertex_index, g)[source]

returns (size_t) 0 as it should.

I'm stuck again, though I am getting better at reading the big template compiler error spew.
On Wed, Jun 30, 2010 at 9:59 PM, Jeremiah Willcock <jewillco@osl.iu.edu> wrote:
On Wed, 30 Jun 2010, W.P. McNeill wrote:

Digging through the error stack it looked like the problem may have been with a vertex_iterator declaration at the top of astar_search()
function (astar_search.hpp line 285), so I tried to compile the following trivial program with grid_graph:
#include <boost/graph/grid_graph.hpp>

int main(int argc, char* argv[]) {
  using namespace boost;
  graph_traits< grid_graph<2> >::vertex_iterator vi;
  return 0;
}

Note that it is just vanilla grid_graph, with no edge weights or other code defined by me.

I get the following compilation error:

g++ -g -I/opt/local/include   -c -o main.o main.cpp
/opt/local/include/boost/iterator/transform_iterator.hpp: In constructor ‘boost::transform_iterator<UnaryFunction, Iterator, Reference,
Value>::transform_iterator() [with UnaryFunc = boost::detail::grid_graph_vertex_at<boost::grid_graph<2ul, size_t, size_t> >, Iterator =
boost::counting_iterator<size_t, boost::use_default, boost::use_default>, Reference = boost::use_default, Value = boost::use_default]’:
main.cpp:7:   instantiated from here
/opt/local/include/boost/iterator/transform_iterator.hpp:100: error: no matching function for call to
‘boost::detail::grid_graph_vertex_at<boost::grid_graph<2ul, size_t, size_t> >::grid_graph_vertex_at()’
/opt/local/include/boost/graph/grid_graph.hpp:104: note: candidates are:
boost::detail::grid_graph_vertex_at<Graph>::grid_graph_vertex_at(const Graph*) [with Graph = boost::grid_graph<2ul, size_t, size_t>]
/opt/local/include/boost/graph/grid_graph.hpp:100: note:                 boost::detail::grid_graph_vertex_at<boost::grid_graph<2ul,
size_t, size_t> >::grid_graph_vertex_at(const boost::detail::grid_graph_vertex_at<boost::grid_graph<2ul, size_t, size_t> >&)
make: *** [main.o] Error 1

This looks wrong to me.  I thought the fact that grid_graph models the VertexList concept would ensure that I could declare a default
vertex_iterator.

This is a bug; it's been fixed in the trunk for a few days.  Could you please see if that version (https://svn.boost.org/svn/boost/trunk/boost/graph/grid_graph.hpp) works?

-- Jeremiah Willcock

_______________________________________________
Boost-users mailing list
Boost-users@lists.boost.org
http://lists.boost.org/mailman/listinfo.cgi/boost-users