<div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote">2013/7/7 Eli Friedman <span dir="ltr"><<a href="mailto:eli.friedman@gmail.com" target="_blank">eli.friedman@gmail.com</a>></span><br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div class="im">On Sun, Jul 7, 2013 at 10:14 AM, Victor Vicente de Carvalho<br>
<<a href="mailto:victor.v.carvalho@gmail.com">victor.v.carvalho@gmail.com</a>> wrote:<br>
> Thanks Eli, so It's just a matter of dyn_cast the Type* to RecordType*?<br>
<br>
</div>Yes... except that you generally want to use the getAs() method of<br>
Type rather than dyn_cast because getAs automatically looks through<br>
sugar like typedefs.<br>
<div class="im"><br>
> Another question, what's the best way to detect is a Type has atemplate<br>
> parameters?<br>
<br>
</div>Depends on what exactly you mean by "has template parameters"... but<br>
CXXRecordDecl::getDescribedClassTemplate might be helpful.<br>
<span class=""><font color="#888888"><br></font></span></blockquote><div> </div><div>Calling getDescribedClassTemplate on a CXXRecordDecl* for a std::shared_ptr<X> returns null, and getNumTemplateParameterLists is returning zero too. The compilation is fine, tough, so it's not a missing include.</div>

<div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><span class=""><font color="#888888">
-Eli<br>
</font></span></blockquote></div><br></div></div>