[Boost.Graph] specifying PropertyGraphConcept requirements

I am trying to specify the requirement that types cover the PropertyGraphConcept of the BGL. The following code illustrates a simple test case. #include <boost/graph/adjacency_list.hpp> struct VertexProperties { typedef VertexProperties kind; int distance; }; struct EdgeProperties { typedef EdgeProperties kind; int weight; }; typedef boost::adjacency_list<boost::vecS, boost::vecS, boost::directedS, VertexProperties, EdgeProperties> graph_type; int main() { boost::function_requires< boost::PropertyGraphConcept<graph_type, int, int VertexProperties::*> >(); return 0; } However, with Boost v1.33.1, the concept check yields the following error: /usr/pkg/include/boost/property_map.hpp:158: error: assignment of read-only data-member ` boost::ReadablePropertyMapConcept<boost::bundle_property_map<const graph_type, size_t, VertexProperties, const int>, int>::val' The location of that error is associated with the indicated line clipped out of property_map.hpp: // property_map.hpp template <class PMap, class Key> struct ReadablePropertyMapConcept { typedef typename property_traits<PMap>::key_type key_type; typedef typename property_traits<PMap>::reference reference; typedef typename property_traits<PMap>::category Category; typedef boost::readable_property_map_tag ReadableTag; void constraints() { function_requires< ConvertibleConcept<Category, ReadableTag> >(); val = get(pmap, k); // <== read-only assignment error } PMap pmap; Key k; typename property_traits<PMap>::value_type val; }; Perhaps the template arguments in the concept checking are wrong; I have found the documentation unclear on how to really use these. Any help on how to make this work correctly is greatly appreciated. Thanks alot. Cheers, Brook
participants (1)
-
Brook Milligan