summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--clang/include/clang/Sema/Overload.h7
-rw-r--r--clang/lib/Sema/SemaOverload.cpp2
-rw-r--r--clang/test/SemaCXX/pr28050.cpp11
3 files changed, 16 insertions, 4 deletions
diff --git a/clang/include/clang/Sema/Overload.h b/clang/include/clang/Sema/Overload.h
index d0f21cd71f8..68678ad7fcd 100644
--- a/clang/include/clang/Sema/Overload.h
+++ b/clang/include/clang/Sema/Overload.h
@@ -428,8 +428,11 @@ namespace clang {
};
ImplicitConversionSequence()
- : ConversionKind(Uninitialized), StdInitializerListElement(false)
- {}
+ : ConversionKind(Uninitialized), StdInitializerListElement(false) {
+ Standard.First = ICK_Identity;
+ Standard.Second = ICK_Identity;
+ Standard.Third = ICK_Identity;
+ }
~ImplicitConversionSequence() {
destruct();
}
diff --git a/clang/lib/Sema/SemaOverload.cpp b/clang/lib/Sema/SemaOverload.cpp
index b025a397edc..dfb4cceddfd 100644
--- a/clang/lib/Sema/SemaOverload.cpp
+++ b/clang/lib/Sema/SemaOverload.cpp
@@ -1199,7 +1199,6 @@ TryUserDefinedConversion(Sema &S, Expr *From, QualType ToType,
case OR_Success:
case OR_Deleted:
ICS.setUserDefined();
- ICS.UserDefined.Before.setAsIdentityConversion();
// C++ [over.ics.user]p4:
// A conversion of an expression of class type to the same class
// type is given Exact Match rank, and a conversion of an
@@ -4540,7 +4539,6 @@ TryReferenceInit(Sema &S, Expr *Init, QualType DeclType,
return ICS;
}
- ICS.UserDefined.Before.setAsIdentityConversion();
ICS.UserDefined.After.ReferenceBinding = true;
ICS.UserDefined.After.IsLvalueReference = !isRValRef;
ICS.UserDefined.After.BindsToFunctionLvalue = false;
diff --git a/clang/test/SemaCXX/pr28050.cpp b/clang/test/SemaCXX/pr28050.cpp
new file mode 100644
index 00000000000..57e90eb7516
--- /dev/null
+++ b/clang/test/SemaCXX/pr28050.cpp
@@ -0,0 +1,11 @@
+// RUN: %clang_cc1 -triple x86_64-pc-windows-msvc -std=c++11 %s -fsyntax-only
+//
+// expected-no-diagnostics
+
+class A {
+public:
+ A(char *s) {}
+ A(A &&) = delete;
+};
+
+int main() { A a("OK"); }
OpenPOWER on IntegriCloud