Boost logo

Boost :

From: Brook Milligan (brook_at_[hidden])
Date: 2007-02-22 13:41:37


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


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk