Sent from my iPhone
On Sep 19, 2011, at 9:58 AM, Matthieu Monrocq <[email protected]> wrote: > > > 2011/9/19 Douglas Gregor <[email protected]> > Hello Stepan, > > On Sep 15, 2011, at 1:28 PM, Stepan Dyatkovskiy wrote: > > > C++ does not allow member templates. Clang doesn't check for this case and > > crash. > > > > Please find attach the patch which fixes this. > > + // FIXME: Check that the name is an identifier! > + IdentifierInfo *II = Name.getAsIdentifierInfo(); > + > + // Match up the template parameter lists with the scope specifier, then > + // determine whether we have a template or a template specialization. > + bool isExplicitSpecialization = false; > + bool Invalid = false; > + if (TemplateParameterList *TemplateParams = > + MatchTemplateParametersToScopeSpecifier( > + D.getDeclSpec().getSourceRange().getBegin(), > + D.getIdentifierLoc(), > + D.getCXXScopeSpec(), > + TemplateParameterLists.get(), > + TemplateParameterLists.size(), > + /*never a friend*/false, > + isExplicitSpecialization, > + Invalid)) { > > 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? > > - Doug > > Does not MSVC allow member function templates to be specialized within the > class directly ? It does, and we handle that. This path is for data members.
_______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
