From: Richard Smith Date: Thu, 20 Oct 2016 07:53:17 +0000 (+0000) Subject: Work around MSVC rejects-valid. Apparenty (some versions of) MSVC will check X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=c467cbcfd2dc2dc4e2e943f1268023ce88ba1465;p=clang 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. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@284701 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Sema/SemaExprCXX.cpp b/lib/Sema/SemaExprCXX.cpp index 96e1b24de8..b660bd3486 100644 --- a/lib/Sema/SemaExprCXX.cpp +++ b/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);