<div dir="ltr"><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Feb 5, 2014 at 9:04 PM, Nick Lewycky <span dir="ltr"><<a href="mailto:nicholas@mxc.ca" target="_blank">nicholas@mxc.ca</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Is this better than using isa<>  instead of dyn_cast<>  in some way? Ie,<br>

<br>
     } else if (isa<FunctionDecl>(ND)) {<br>
       const CXXMethodDecl *MD = dyn_cast<CXXMethodDecl>(ND);<br>
       ...<br>
</blockquote>
<br></div>
I haven't bothered to check, but probably not. The isa<> method calls classof, but you can overload classof at any level. If CXXMethodDecl has different classof implementations for when the static type is a FunctionDecl vs. NamedDecl, then it could be better.<br>

<br>
But I didn't really think about it. It's common to declare the variable and then use it, and I figured that it was probably intended that way. I don't much care, if you want to change it, or if you want me to change it. Whatever.</blockquote>
</div><br>Well, there is a concrete difference: the table of the switch for casting from FunctionDecl to CXXMethodDecl is smaller than the table for NamedDecl to CXXMethodDecl. In that sense, it is a (minute) performance improvement to use the most-refined type statically available.</div>
</div>