From e38da03f589901b08c800633e3077af528a9d4d8 Mon Sep 17 00:00:00 2001 From: Richard Smith Date: Thu, 20 Oct 2016 07:53:17 +0000 Subject: [PATCH] Work around MSVC rejects-valid. Apparenty (some versions of) MSVC will check that a member is default-initializable even if it's initialized by a default member initializer. llvm-svn: 284701 --- clang/lib/Sema/SemaExprCXX.cpp | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/clang/lib/Sema/SemaExprCXX.cpp b/clang/lib/Sema/SemaExprCXX.cpp index 96e1b24..b660bd3 100644 --- a/clang/lib/Sema/SemaExprCXX.cpp +++ b/clang/lib/Sema/SemaExprCXX.cpp @@ -5696,21 +5696,20 @@ QualType Sema::FindCompositePointerType(SourceLocation Loc, struct Conversion { Sema &S; - SourceLocation Loc; Expr *&E1, *&E2; QualType Composite; - InitializedEntity Entity = - InitializedEntity::InitializeTemporary(Composite); - InitializationKind Kind = - InitializationKind::CreateCopy(Loc, SourceLocation()); + InitializedEntity Entity; + InitializationKind Kind; InitializationSequence E1ToC, E2ToC; - bool Viable = E1ToC && E2ToC; + bool Viable; Conversion(Sema &S, SourceLocation Loc, Expr *&E1, Expr *&E2, QualType Composite) - : S(S), Loc(Loc), E1(E1), E2(E2), Composite(Composite), - E1ToC(S, Entity, Kind, E1), E2ToC(S, Entity, Kind, E2) { - } + : S(S), E1(E1), E2(E2), Composite(Composite), + Entity(InitializedEntity::InitializeTemporary(Composite)), + Kind(InitializationKind::CreateCopy(Loc, SourceLocation())), + E1ToC(S, Entity, Kind, E1), E2ToC(S, Entity, Kind, E2), + Viable(E1ToC && E2ToC) {} QualType perform() { ExprResult E1Result = E1ToC.Perform(S, Entity, Kind, E1); -- 2.7.4