Opened 12 years ago

Closed 12 years ago

#4914 closed Bugs (fixed)

Compile error reverse_graph and filter_graph

Reported by: gast128@… Owned by: Andrew Sutton
Milestone: To Be Determined Component: graph
Version: Boost 1.45.0 Severity: Problem
Keywords: Cc:

Description

Hello all,

posted thru gmane but got all kinds of 'You seem to be top-posting. Don't do that.' messages.

We just upgraded to Boost 1.45 with vs2008 but we got an error in code which has been built fine in the past. Sample code:

#include <boost\graph\adjacency_list.hpp> #include <boost\graph\graph_traits.hpp> #include <boost\graph\filtered_graph.hpp> #include <boost\graph\reverse_graph.hpp>

struct Filter {

template <typename Edge> bool operator()(const Edge& cr) const {

return true;

}

};

int main() {

typedef boost::adjacency_list<

boost::listS, boost::listS, boost::bidirectionalS, int

Graph;

typedef boost::filtered_graph<Graph, Filter> FilteredGraph;

Graph graph;

const Filter filter; const FilteredGraph fgraph(graph, filter);

boost::make_reverse_graph(fgraph);

return 0;

}

Error:

1>c:\work sdk\boost_1_45_0\boost\graph\graph_traits.hpp(222) : error C2039: 'graph_property_type' : is not a member of 'boost::filtered_graph<Graph,EdgePredicate>' 1> with 1> [ 1> Graph=Graph, 1> EdgePredicate=Filter 1> ] 1> c:\work sdk\boost_1_45_0\boost\graph\reverse_graph.hpp(83) : see reference to class template instantiation 'boost::graph_property_type<G>' being compiled 1> with 1> [ 1> G=boost::filtered_graph<Graph,Filter> 1> ] 1> c:\work\temp\graph\graph.cpp(33) : see reference to class template instantiation 'boost::reverse_graph<BidirectionalGraph,GraphRef>' being compiled 1> with 1> [ 1> BidirectionalGraph=FilteredGraph, 1> GraphRef=const FilteredGraph & 1> ] 1>c:\work sdk\boost_1_45_0\boost\graph\graph_traits.hpp(240) : error C2039: 'graph_bundled' : is not a member of 'boost::filtered_graph<Graph,EdgePredicate>' 1> with 1> [ 1> Graph=Graph, 1> EdgePredicate=Filter 1> ] 1> c:\work sdk\boost_1_45_0\boost\graph\reverse_graph.hpp(84) : see reference to class template instantiation 'boost::graph_bundle_type<G>' being compiled 1> with 1> [ 1> G=boost::filtered_graph<Graph,Filter> 1> ] 1>c:\work sdk\boost_1_45_0\boost\graph\graph_traits.hpp(240) : error C2146: syntax error : missing ';' before identifier 'type' 1>c:\work sdk\boost_1_45_0\boost\graph\graph_traits.hpp(240) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 1>c:\work sdk\boost_1_45_0\boost\graph\graph_traits.hpp(240) : error C2208: 'boost::type' : no members defined using this type 1>c:\work sdk\boost_1_45_0\boost\graph\graph_traits.hpp(240) : fatal error C1903: unable to recover from previous error(s); stopping compilation

ref: http://article.gmane.org/gmane.comp.lib.boost.user/64165

Change History (3)

comment:1 by anonymous, 12 years ago

Somehow my whole nice formatting is eaten by SVN.

comment:2 by Jeremiah Willcock, 12 years ago

To get the formatting, use {{{ and }}} (see https://svn.boost.org/trac/boost/wiki/WikiFormatting). Note that your code uses backslashes in the #include file paths and does not initialize filter (an error in GCC). A fix for the actual problem is coming soon.

comment:3 by Jeremiah Willcock, 12 years ago

Resolution: fixed
Status: newclosed

(In [66900]) Fixed bundled graph properties in filtered_graph; fixes #4914

Note: See TracTickets for help on using tickets.