Hi guys,
I have a graph so defined:

typedef boost::adjacency_list<boost::listS, boost::listS, boost::bidirectionalS, Osm::VertexProperties, EdgeProperties> Graph;

Graph osmGraph;


I'm trying to delete some vertices from osmGraph using the usual remove_vertex(Vertex, Graph) but I get the following error from Visual Studio 2008 when compiling:

boost_1_40_0\boost/graph/named_graph.hpp(349) : error C2664: 'boost::multi_index::detail::hashed_index_iterator<Node,BucketArray> boost::multi_index::detail::hashed_index<KeyFromValue,Hash,Pred,SuperMeta,TagList,Category>::erase(boost::multi_index::detail::hashed_index_iterator<Node,BucketArray>)' : cannot convert parameter 1 from 'void *' to 'boost::multi_index::detail::hashed_index_iterator<Node,BucketArray>'

the code I use is:
{
vector<int> component(num_vertices(osmGraph));
int num = strong_components(osmGraph, 
            make_iterator_property_map(&component[0], get(&Osm::VertexProperties::id, osmGraph)),
            vertex_index_map(get(&Osm::VertexProperties::id, osmGraph)));
int main_comp = component[depotID];
for (int i = 0; i != component.size(); i++){
if (component[i] == main_comp)
continue;

if (is_incident_to_required_edge(osmGraph, i)){
cerr << "Required components on input topology are not strongly connected. Check the input .osm file" << endl;
return 1;
}
else {
clear_vertex(osm_get_vertex(i, osmGraph), osmGraph);
Osm::Vertex osm_v = osm_get_vertex(i, osmGraph);
cout << "id=" << osmGraph[osm_v].id << endl;
remove_vertex(osm_v, osmGraph);
}
}
}

why it doesnt work? why the same code with the graph defined in the following way works?

typedef adjacency_list < listS, listS, bidirectionalS, property < vertex_name_t, std::string, 
//vertex property
property < vertex_unique_id_t, int, property < vertex_color_t, boost::default_color_type> ............. >,
//edge property
property < edge_index_t, int, property < edge_num_bins_t, int, property < edge_unique_id_t, int, property < edge_name_t, std::string> ..............>
> Graph;

PLEASE help.

Camillo
Ciao