On Friday 21 March 2003 09:55 pm, dmatt001 wrote:
Hi Guys,
I have three interesting questions in regard to graph properties. Please assume Boost 1_29_0. I'm a little slow in upgrading ... ;-)
1. If I define:
MyGraph_t const myGraph;
Why cannot I get a property map to access my property:
typedef boost::property_map
::type MyPropMap_t; MyPropMap_t myPropMap = get(MyPropTag_t(), myGraph);
You want:
typedef boost::property_map
2. Why not use a copy constructor if it exists when copying graph elements? Is the existence of a copy constructor a hard-yard to verfiy with MPL?
I don't know the rationale behind the decision, but I do know that it is _very_ hard to determine if there is a copy constructor in C++ because they are implicitly generated. The question isn't "is there a copy constructor" but "is there an _accessible_ copy constructor" and, unfortunately, we can't test accessibility in a metaprogram :(.
3. I noticed that remove_edge(...) complains in regard to a missing default constructor of a property object. Don't get me wrong; this happened during an editing mishap and I know that we need regular types here. Why is this required if you are removing an element?
The answer is probably linked to the answer to #2: if copy constructors aren't used, then edges (along with their internal properties) are copied by defalut-constructing the target then calling a function to perform the copy. Doug