I have another question. The following code won't compile. But if you change the first "listS" to "vecS", then it does. I can't find anything in the docs which forbids the use of "degree" with adjacency_list <listS, listS, ... ------------- #include <boost/config.hpp> #include <list> #include <boost/graph/adjacency_list.hpp> using namespace boost; using namespace std; typedef property<vertex_color_t, default_color_type, property<vertex_distance_t,std::size_t, property<vertex_degree_t,std::size_t, property<vertex_in_degree_t, std::size_t, property<vertex_out_degree_t,std::size_t> > > > > VertexProperty; typedef adjacency_list<listS, listS, bidirectionalS, VertexProperty> Graph; typedef boost::graph_traits<Graph>::vertex_descriptor vertexType; int main(int, char*[]) { Graph g; vertexType v0; v0 = add_vertex(g); out_degree(v0, g); } ----------- the compile error is: ----------- /usr/include/boost/iterator/iterator_traits.hpp: In function `void std::distance(_InputIterator, _InputIterator, _Distance&) [with _InputIterator = std::_List_iterator<boost::detail::sei_<size_t, std::_List_iterator<boost::list_edge<size_t, boost::no_property>, boost::list_edge<size_t, boost::no_property>&, boost::list_edge<size_t, boost::no_property>*>, boost::no_property>, const boost::detail::sei_<size_t, std::_List_iterator<boost::list_edge<size_t, boost::no_property>, boost::list_edge<size_t, boost::no_property>&, boost::list_edge<size_t, boost::no_property>*>, boost::no_property>&, const boost::detail::sei_<size_t, std::_List_iterator<boost::list_edge<size_t, boost::no_property>, boost::list_edge<size_t, boost::no_property>&, boost::list_edge<size_t, boost::no_property>*>, boost::no_property>*>, _Distance = size_t]': /usr/include/g++-v3/bits/stl_list.h:307: instantiated from `size_t std::list<_Tp, _Alloc>::size() const [with _Tp = boost::detail::sei_<size_t, std::_List_iterator<boost::list_edge<size_t, boost::no_property>, boost::list_edge<size_t, boost::no_property>&, boost::list_edge<size_t, boost::no_property>*>, boost::no_property>, _Alloc = std::allocator<boost::detail::sei_<size_t, std::_List_iterator<boost::list_edge<size_t, boost::no_property>, boost::list_edge<size_t, boost::no_property>&, boost::list_edge<size_t, boost::no_property>*>, boost::no_property>
]' /usr/include/boost/graph/detail/adjacency_list.hpp:1409: instantiated from `typename Config::degree_size_type boost::out_degree(typename Config::vertex_descriptor, const boost::adj_list_helper<Config, Base>&) [with Config = boost::detail::adj_list_gen<boost::adjacency_list<boost::listS, boost::vecS, boost::bidirectionalS, VertexProperty, boost::no_property, boost::no_property, boost::listS>, boost::vecS, boost::listS, boost::bidirectionalS, VertexProperty, boost::no_property, boost::no_property, boost::listS>::config, Base = boost::bidirectional_graph_helper_with_property<boost::detail::adj_list_gen<boost::adjacency_list<boost::listS, boost::vecS, boost::bidirectionalS, VertexProperty, boost::no_property, boost::no_property, boost::listS>, boost::vecS, boost::listS, boost::bidirectionalS, VertexProperty, boost::no_property, boost::no_property, boost::listS>::config>]' graph2.cpp:26: instantiated from here /usr/include/boost/iterator/iterator_traits.hpp:54: `template<Iterator> struct boost::iterator_category' is not a function, /usr/include/g++-v3/bits/stl_iterator_base_types.h:196: conflict with `template<_Iter> typename std::iterator_traits::iterator_category std::iterator_category(const _Iter&)' /usr/include/g++-v3/bits/stl_iterator_base_funcs.h:102: in call to `iterator_category'
----------- thanks, bayle
participants (1)
-
Bayle Shanks