<html><head></head><body bgcolor="#FFFFFF"><div><br><br>Sent from my iPhone</div><div><br>On Sep 19, 2011, at 9:58 AM, Matthieu Monrocq <<a href="mailto:matthieu.monrocq@gmail.com">matthieu.monrocq@gmail.com</a>> wrote:<br><br></div><div></div><blockquote type="cite"><div><br><br><div class="gmail_quote">2011/9/19 Douglas Gregor <span dir="ltr"><<a href="mailto:dgregor@apple.com">dgregor@apple.com</a>></span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
Hello Stepan,<br>
<br>
On Sep 15, 2011, at 1:28 PM, Stepan Dyatkovskiy wrote:<br>
<br>
> C++ does not allow member templates. Clang doesn't check for this case and crash.<br>
><br>
> Please find attach the patch which fixes this.<br>
<br>
+ // FIXME: Check that the name is an identifier!<br>
+ IdentifierInfo *II = Name.getAsIdentifierInfo();<br>
+<br>
+ // Match up the template parameter lists with the scope specifier, then<br>
+ // determine whether we have a template or a template specialization.<br>
+ bool isExplicitSpecialization = false;<br>
+ bool Invalid = false;<br>
+ if (TemplateParameterList *TemplateParams =<br>
+ MatchTemplateParametersToScopeSpecifier(<br>
+ D.getDeclSpec().getSourceRange().getBegin(),<br>
+ D.getIdentifierLoc(),<br>
+ D.getCXXScopeSpec(),<br>
+ TemplateParameterLists.get(),<br>
+ TemplateParameterLists.size(),<br>
+ /*never a friend*/false,<br>
+ isExplicitSpecialization,<br>
+ Invalid)) {<br>
<br>
Why are we even trying to match up the template parameter lists here? One isn't allowed to write a specialization inside a class, much less a specialization that looks like a variable. Couldn't this be a simpler "is there a template parameter list" check?<br>
<br>
- Doug<br></blockquote><div> </div></div>Does not MSVC allow member function templates to be specialized within the class directly ?<br>
</div></blockquote><br><div>It does, and we handle that. This path is for data members. </div></body></html>