Boost logo

Boost Users :

Subject: [Boost-users] [graph] Compilation problem using depth_first_visit with a listS as a VertexListS
From: Simon Bozonnet (simon.bozonnet_at_[hidden])
Date: 2013-12-03 12:01:33


Hi There,
I am struggling with BOOST while trying to link them with my code. Actually
I start while using "loops_dfs.cpp" as an example.
>From that I isolated the following code which compiles without any problem:

typedef adjacency_list < vecS, vecS,
bidirectionalS,GraphvizVertexProperty,GraphvizEdgeProperty,
GraphvizGraphProperty > Graph;

Graph _graph2;
  typedef color_traits < default_color_type > Color;
  typedef graph_traits < Graph >::vertex_descriptor VertexType;
  typedef graph_traits < Graph >::edge_descriptor EdgeType;

EdgeType back_edge;//ok I know it is empty but it just to try the
compilation!!

 VertexType loop_head, loop_tail;
 loop_tail = source(back_edge, _graph2);
 loop_head = target(back_edge, _graph2);

 std::vector < default_color_type >
reachable_from_head(num_vertices(_graph2), Color::white());
 default_color_type c;

depth_first_visit(_graph2, loop_head, default_dfs_visitor(),
make_iterator_property_map(reachable_from_head.begin(),get(vertex_index,
_graph2), c));

So this works fine!

Then, I would like to change the type of graph, so more precisely, to use a
std::list (or listS) instead of a std..vector (vecS) for the VertexListS
So the first line declaration becomes:

typedef adjacency_list < vecS, listS,
bidirectionalS,GraphvizVertexProperty,GraphvizEdgeProperty,
GraphvizGraphProperty > Graph;
//only the 2nd argument changes

But then when I compile the code, I get 1 error during the compilation as
described hereafter.

Since I am fighting for more than one day now on this problem, I would
**really** appreciate if someone can give me more explanations and/or
advice to solve my problem...

Thanks in advance,

Simon

1>boost/property_map.hpp(351) : error C2679: binary '+' : no operator found
which takes a right-hand operand of type
'boost::detail::error_property_not_found' 1>(or there is no acceptable
conversion)
1> C:\Program Files (x86)\Microsoft Visual Studio
8\VC\include\vector(366): could be 'std::_Vector_iterator<_Ty,_Alloc>
std::_Vector_iterator<_Ty,_Alloc>::operator +(__w64 int) const'
1> with
1> [
1> _Ty=boost::default_color_type,
1> _Alloc=std::allocator<boost::default_color_type>
1> ]
1> while trying to match the argument list '(const
std::_Vector_iterator<_Ty,_Alloc>, boost::detail::error_property_not_found)'
1> with
1> [
1> _Ty=boost::default_color_type,
1> _Alloc=std::allocator<boost::default_color_type>
1> ]
1> \inc\boost/property_map.hpp(351) : while compiling class template
member function 'boost::default_color_type
boost::iterator_property_map<RandomAccessIterator,IndexMap,T,R>::operator
[](void *) const'
1> with
1> [
1>
RandomAccessIterator=std::_Vector_iterator<boost::default_color_type,std::allocator<boost::default_color_type>>,
1>
IndexMap=boost::adj_list_vertex_property_map<boost::adjacency_list<boost::listS,boost::listS,boost::bidirectionalS,LatticeNode,LatticeArc>,boost::detail::error_property_not_found,boost::detail::error_property_not_found
&,boost::vertex_index_t>,
1> T=boost::default_color_type,
1> R=boost::default_color_type &
1> ]
1> ..\test.cpp(18) : see reference to class template instantiation
'boost::iterator_property_map<RandomAccessIterator,IndexMap,T,R>' being
compiled
1> with
1> [
1>
RandomAccessIterator=std::_Vector_iterator<boost::default_color_type,std::allocator<boost::default_color_type>>,
1> 1>
IndexMap=boost::adj_list_vertex_property_map<boost::adjacency_list<boost::listS,boost::listS,boost::bidirectionalS,LatticeNode,LatticeArc>,boost::detail::error_property_not_found,boost::detail::error_property_not_found
&,boost::vertex_index_t>,
1> T=boost::default_color_type,
1> R=boost::default_color_type &
1> ]



Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net