[graph] Looks like there is a bug in some graph-writing function
Hi,
I was correctly reading graphs in graphml and graphviz. Now I've added support for
And now I get tons of errors at the last line of my code (I mean symbol '}').
After looking carefully at them looks like there are two families of errors, all of them related to property maps:
- Looks like
But if the property map is backed by std::map, it's documented
graph writing. property maps are being accessed for reading using operator[]. that operator[]
in fact does an insert in the map. This is not a problem when reading a graph, as the graph is mutable. But of course it is a problem when writing a const graph. I get tons of errors about modifying read-only locations and discarding qualifiers (const, of course).
- The other errors are about not finding a matching operator>>, also
related with properties.
In this case, it looks to be related with reading (and I think concretely graphviz), but I don't understand why, as it used to work before. May be this is a cryptic bug of my code.
I don't find clear information in the errors about what graph writing function is causing the first family of errors. I can attach compiler output, but I'm afraid messages are in Spanish :S Moreover, I'm not sure if it's correct to send attached files to the list. If anybody wants me to send it, just ask.
I've been able to locate the exact origin point of the error. It hasn't been easy. It isn't a problem of graph writing functions. The problem is in sentences like this: dp.property("min",get(&V::min,g)); where dp is a reference to a dynamic_properties object, g is a const reference to a graph and V is the type of vertex bundled properties of graph g (min is one of those properties). Commenting out all lines like this, everything compiles perfectly. Looks like, somehow, that sentence tries to modify properties in graph g and, as g is const, it fails to compile. Is there any workaround? Thanks, Juan
participants (1)
-
Juan Antonio Farré Basurte