<div dir="ltr">Sorry for the late answer a simplified extract of the code which gives an UnresolvedMemberExpr is this<div><br><div><div>class  AdapterManager {</div><div><span class="" style="white-space:pre"> </span>public:</div>
<div><span class="" style="white-space:pre">            </span>using AdapterCreationFunction = void* (*)(void* adaptee);</div><div><br></div><div><span class="" style="white-space:pre">         </span>template<class Adapter> Adapter* someTestFunc();</div>
<div><br></div><div><br></div><div><span class="" style="white-space:pre">  </span>private:</div><div><span class="" style="white-space:pre">           </span>using TypeIdType = std::size_t;</div><div><br></div><div><span class="" style="white-space:pre">           </span>template <class type></div>
<div><span class="" style="white-space:pre">            </span>static TypeIdType typeId();</div><div><br></div><div><br></div><div><span class="" style="white-space:pre">              </span>static QHash<TypeIdType, AdapterCreationFunction> defaultAdapters;</div>
<div>};</div><div><br></div><div>template <class type> AdapterManager::TypeIdType AdapterManager::typeId()</div><div>{</div><div><span class="" style="white-space:pre">    </span>return typeid(type).hash_code();</div><div>
}</div><div><br></div><div>template<class Adapter> Adapter* AdapterManager::someTestFunc()</div><div>{</div><div><span class="" style="white-space:pre">  </span>return defaultAdapters.find( typeId<Adapter>() );</div>
<div>}</div></div><div><br></div><div><br></div><div>in the body of someTestFunc() find is an unresolvedMemberExpr the dump looks like this:</div><div>
<p style="margin:0px"><span style="font-family:monospace;font-size:9pt;color:rgb(180,9,9)">UnresolvedMemberExpr 0x15b2808 '<bound member function type>' lvalue</span></p>
<p style="margin:0px"><span style="font-family:monospace;font-size:9pt;color:rgb(180,9,9)">`-DeclRefExpr 0x1583020</span></p>
<p style="margin:0px"><span style="font-family:monospace;font-size:9pt;color:rgb(180,9,9)">'QHash<TypeIdType, AdapterCreationFunction>':'class QHash<unsigned long, void *(*)(void *)>' lvalue Var 0x15824f0 'defaultAdapters' 'QHash<TypeIdType, AdapterCreationFunction>':'class QHash<unsigned long, void *(*)(void *)>'</span></p>
<p style="margin:0px"><br></p></div><div>However if I enter a value instead of the typeId function it is no more unresolved. <br>So I guess this is normal behavior (because of template stuff) and therefore the description is wrong? <br>
</div></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">2013/6/17 James Dennett <span dir="ltr"><<a href="mailto:james.dennett@gmail.com" target="_blank">james.dennett@gmail.com</a>></span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="im">On Mon, Jun 17, 2013 at 12:35 AM, Manuel Klimek <<a href="mailto:klimek@google.com">klimek@google.com</a>> wrote:<br>
> On Fri, Jun 14, 2013 at 1:39 PM, Lukas Vogel <<a href="mailto:lukedirtwalkerdev@gmail.com">lukedirtwalkerdev@gmail.com</a>><br>
> wrote:<br>
>><br>
>> Hi,<br>
>><br>
>> I'm currently writing a Tool using libtooling & RecursiveAstVisitor.<br>
>> In the AST I come across quite a lot of Unresolved expressions and I<br>
>> looked through the documentation of UnresolvedMemberExpr<br>
>> [UnresolvedMemberExpr] there it says that those nodes will be resolved in<br>
>> the final AST.<br>
>> Is there any possibility to get this final AST and run the tool over this?<br>
>> Or to what does this refer?<br>
><br>
><br>
> The AST you see with libtooling should be the final AST :) Are you running<br>
> over incomplete code (that is, code that doesn't compile)?<br>
><br>
> Can you paste a reproduction?<br>
<br>
</div>I've not checked, but I'd assume that there are plenty of unresolved<br>
nodes in parsed templates (as opposed to their instantiations).<br>
Likely the documentation could be improved.<br>
<span class="HOEnZb"><font color="#888888"><br>
-- James<br>
</font></span></blockquote></div><br></div>