<div dir="ltr">Hello,<div><br></div><div>GraphTraits specialization for "const CallGraphNode *" and "const CallGraph *" seems to be broken. This example:</div><div><br></div><div>void foo(const CallGraph *G) {</div><div>  auto I = GraphTraits<const CallGraph *>::nodes_begin(G);</div><div>  auto K = I++;</div><div><br></div><div>  ...</div><div>}</div><div><br></div><div>void bar(const CallGraphNode *N) {</div><div>  auto I = GraphTraits<const CallGraphNode *>::nodes_begin(G);</div><div>  auto K = I++;</div><div><br></div><div>  ....</div><div>}</div><div><br></div><div>does not compile as the GraphTraits specialization does not use a mapped_iterator, hence it is not possible to dereference a CallGraphNode::CallRecord and get the corresponding const CallGraphNode *.</div><div><br></div><div>The attached patch fixes this problem using the same approach used for non-const specialization.</div><div><br></div><div>Hope it could be useful,</div><div>Ettore Speziale</div></div>