diff --git a/include/boost/graph/detail/adjacency_list.hpp b/include/boost/graph/detail/adjacency_list.hpp index 32332cf9..895a0eb9 100644 --- a/include/boost/graph/detail/adjacency_list.hpp +++ b/include/boost/graph/detail/adjacency_list.hpp @@ -1333,7 +1333,7 @@ namespace boost { boost::vertex_property_tag) { typedef typename Config::graph_type Graph; typedef typename boost::property_map::type PA; - return PA(static_cast(g)); + return PA(&static_cast(g)); } template inline @@ -1344,7 +1344,7 @@ namespace boost { typedef typename Config::graph_type Graph; typedef typename boost::property_map::const_type PA; const Graph& cg = static_cast(g); - return PA(const_cast(cg)); + return PA(&cg); } } // namespace detail @@ -2092,12 +2092,12 @@ namespace boost { } }; - template struct vec_adj_list_vertex_property_map : public boost::put_get_helper< Reference, - vec_adj_list_vertex_property_map > { @@ -2105,20 +2105,21 @@ namespace boost { typedef Reference reference; typedef typename boost::graph_traits::vertex_descriptor key_type; typedef boost::lvalue_property_map_tag category; - vec_adj_list_vertex_property_map(GraphRef g) : m_g(g) { } + vec_adj_list_vertex_property_map() { } + vec_adj_list_vertex_property_map(GraphPtr g) : m_g(g) { } inline Reference operator[](key_type v) const { - return get_property_value(m_g.m_vertices[v].m_property, Tag()); + return get_property_value(m_g->m_vertices[v].m_property, Tag()); } inline Reference operator()(key_type v) const { return this->operator[](v); } - GraphRef m_g; + GraphPtr m_g; }; - template + template struct vec_adj_list_vertex_all_properties_map : public boost::put_get_helper > { @@ -2126,14 +2127,14 @@ namespace boost { typedef PropertyRef reference; typedef typename boost::graph_traits::vertex_descriptor key_type; typedef boost::lvalue_property_map_tag category; - vec_adj_list_vertex_all_properties_map(GraphRef g) : m_g(g) { } + vec_adj_list_vertex_all_properties_map(GraphPtr g) : m_g(g) { } inline PropertyRef operator[](key_type v) const { - return m_g.m_vertices[v].m_property; + return m_g->m_vertices[v].m_property; } inline PropertyRef operator()(key_type v) const { return this->operator[](v); } - GraphRef m_g; + GraphPtr m_g; }; struct adj_list_any_vertex_pa { @@ -2184,9 +2185,9 @@ namespace boost { typedef const value_type& const_reference; typedef vec_adj_list_vertex_property_map - type; + type; typedef vec_adj_list_vertex_property_map - const_type; + const_type; }; }; struct vec_adj_list_id_vertex_pa { @@ -2202,9 +2203,9 @@ namespace boost { struct bind { typedef typename Graph::vertex_descriptor Vertex; typedef vec_adj_list_vertex_all_properties_map - type; + type; typedef vec_adj_list_vertex_all_properties_map - const_type; + const_type; }; }; namespace detail {