
Hi, I try to write my graph to std::cout with boost::write_graphviz. In the example boost/libs/graph/example/graphviz.cpp, the graph used is a boost::adjacency_list<vecS, vecS, directedS, property<vertex_name_t, std::string>, property<edge_weight_t, double> > and all work fine. my graph is a boost::adjacency_list<listS, listS, bidirectedS, property<my_vertex_t, my_vertex>, property<my_edge_t, my_edge>, property<my_graph_t, my_graph> , listS > If a do "write_graphviz(std::cout, g);" I have a very big error. (why BGL didn't use boost concept check ???) I search in boost code and i found !!! In the file boost/graph/graphviz.hpp line 257 (boost 1.34) "out << get(vertex_id, *i);" so write_graphviz function get the vertex property with the tag of type vertex_id. By default, the type vertex_id is the enum boost::vertex_index which do reference to the type boost::vertex_index_t; This property is intrinsically in the type boost::adjacency_list<vecS, vecS> because the vertex_descriptor is the index of the vertex. And so all work fine with the function write_graphviz With the type boost::adjacency_list<vecS, listS>, this property is not available. TOOOOOO In the complete signature function : void write_graphviz(std::ostream &, const VertexListGraph & g vertexPropertyWrite vpw, EdgePropertyWriter epw, GraphPropertyWriter gpw, VertexID vertex_id); I can give the property_tag to used in the function. But, In opposition to other BGL algorithm which accept an external PropertyMap, this property must be in the graph. And I don't want to add a index property. Question : How to use write_graphviz algorithm with boost::adjacency_list<listS, listS> ? Is there a magic boost property tag to use with a boost::adjacency_list<listS, listS> like the boost::vertex_index_t tag and the boost::adjacency_list<vecS, vecS> is there another solution ?? Thank David Callu