Hi all,
I've found very few references to the use of bundled properties for graph properties, as opposed to edge and vertex properties. Are these supported? I find that I can supply a bundled property type name for the adjacency_list constructor, but cannot use "get_property" to access individual field values. This type of syntax works:
adjlist.m_property.fieldname = whatever;
but this does not:
get_property(adjlist, &graphproptype::fieldname) = whatever;
although it seems like the second form would be proper (for data hiding, and also the documentation suggests this is right - at least for old-style internal properties).
To be specific, the following code does not compile:
// test case for bundled graph properties
#include
#include <iostream>
using namespace std;
using namespace boost;
/// circuit graph vertex properties
struct VertexProps {
};
/// circuit graph edge props
struct EdgeProps {
};
/// graph properties
struct GraphProps {
int blah;
};
typedef adjacency_list TestGraph;
int main(int argc, char **argv) {
TestGraph mygraph;
set_property(mygraph, &GraphProps::blah, 1);
}
/usr/include/boost/graph/adjacency_list.hpp: In function void boost::set_property(boost::adjacency_list&, Tag, const Value&) [with OEL = boost::vecS, VL = boost::vecS, DirS = boost::directedS, VP = VertexProps, EP = EdgeProps, GP = GraphProps, EL = boost::listS, Tag = int GraphProps::*, Value = int]:
test_graphprops.cpp:29: instantiated from here
/usr/include/boost/graph/adjacency_list.hpp:433: error: no matching function for call to get_property_value(GraphProps&, int GraphProps::*)
Any suggestions?
Thanks and Regards,
Jeff Trull