Эх сурвалжийг харах

[SemaDeclCXX] Allow inheriting constructor declaration to specify a cv-qualified type

Differential Revision: https://reviews.llvm.org/D47419

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@369196 91177308-0d34-0410-b5e6-96231b3b80d8
Tan S. B 6 жил өмнө
parent
commit
177cadc90d

+ 2 - 1
lib/Sema/SemaDeclCXX.cpp

@@ -9997,7 +9997,8 @@ static CXXBaseSpecifier *findDirectBaseWithType(CXXRecordDecl *Derived,
                                                 QualType DesiredBase,
                                                 QualType DesiredBase,
                                                 bool &AnyDependentBases) {
                                                 bool &AnyDependentBases) {
   // Check whether the named type is a direct base class.
   // Check whether the named type is a direct base class.
-  CanQualType CanonicalDesiredBase = DesiredBase->getCanonicalTypeUnqualified();
+  CanQualType CanonicalDesiredBase = DesiredBase->getCanonicalTypeUnqualified()
+    .getUnqualifiedType();
   for (auto &Base : Derived->bases()) {
   for (auto &Base : Derived->bases()) {
     CanQualType BaseType = Base.getType()->getCanonicalTypeUnqualified();
     CanQualType BaseType = Base.getType()->getCanonicalTypeUnqualified();
     if (CanonicalDesiredBase == BaseType)
     if (CanonicalDesiredBase == BaseType)

+ 1 - 0
test/CXX/special/class.inhctor/elsewhere.cpp

@@ -62,3 +62,4 @@ struct G : T {
   G(int &) : G(0) {}
   G(int &) : G(0) {}
 };
 };
 G<B1> g(123);
 G<B1> g(123);
+G<const B1> g2(123);