<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Thu, May 29, 2014 at 8:25 PM, Nikola Smiljanić <span dir="ltr"><<a href="mailto:popizdeh@gmail.com" target="_blank">popizdeh@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="">================<br>
Comment at: lib/AST/ASTDiagnostic.cpp:72<br>
@@ +71,3 @@<br>
</div><div class="">+        = dyn_cast<TemplateSpecializationType>(Ty)) {<br>
</div><div class="">+      for (auto Arg : *TST) {<br>
</div>+          if (Arg.getKind() == TemplateArgument::Type)<br>
----------------<br>
<div class="">Richard Smith wrote:<br>
> Please don't use a `TemplateSpecializationType` as a container like this; it's not notionally a container of template arguments. Instead, add an `arguments` member function to `TemplateSpecializationType` to return the arguments list.<br>

</div>The class already has `getArgs`, `getNumArgs` and `getArg` methods. But why does it have `begin` and `end` if not to be used as a container?</blockquote><div><br></div><div>Those names predate the use of range-based for loops in Clang, and should probably be renamed to args_begin() and args_end(). </div>
</div></div></div>