Gentle Ping !! Please help in reviewing the patch for bug 18275.
--
With regards,
Suyog Sarda
Index: lib/Sema/SemaTemplateInstantiateDecl.cpp
===================================================================
--- lib/Sema/SemaTemplateInstantiateDecl.cpp (revision 200630)
+++ lib/Sema/SemaTemplateInstantiateDecl.cpp (working copy)
@@ -3016,6 +3016,21 @@
// Simple case: not a parameter pack.
assert(FParamIdx < Function->getNumParams());
ParmVarDecl *FunctionParam = Function->getParamDecl(FParamIdx);
+
+ //C++11 [over.load]p3:
+ // Parameter declarations that differ only in the presence or absence of
+ // const and/or volatile are equivalent.That is, the const and volatile
+ // type-specifiers for each parameter type are ignored when
+ // determining which function is being declared, defined, or called.
+
+ if (FunctionParam->getType().isConstQualified() ||
+ FunctionParam->getType().isVolatileQualified()) {
+ QualType FunctionParamType = FunctionParam->getType();
+ FunctionParamType.removeLocalFastQualifiers();
+ FunctionParamType.addFastQualifiers(PatternParam->getType().getLocalFastQualifiers());
+ FunctionParam->setType(FunctionParamType);
+ }
+
FunctionParam->setDeclName(PatternParam->getDeclName());
Scope.InstantiatedLocal(PatternParam, FunctionParam);
++FParamIdx;
@@ -3030,6 +3045,15 @@
"should only be called when all template arguments are known");
for (unsigned Arg = 0; Arg < *NumArgumentsInExpansion; ++Arg) {
ParmVarDecl *FunctionParam = Function->getParamDecl(FParamIdx);
+
+ if (FunctionParam->getType().isConstQualified() ||
+ FunctionParam->getType().isVolatileQualified()) {
+ QualType FunctionParamType = FunctionParam->getType();
+ FunctionParamType.removeLocalFastQualifiers();
+ FunctionParamType.addFastQualifiers(PatternParam->getType().getLocalFastQualifiers());
+ FunctionParam->setType(FunctionParamType);
+ }
+
FunctionParam->setDeclName(PatternParam->getDeclName());
Scope.InstantiatedLocalPackArg(PatternParam, FunctionParam);
++FParamIdx;
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits