diff options
Diffstat (limited to 'clang')
| -rw-r--r-- | clang/lib/Sema/SemaExpr.cpp | 2 | ||||
| -rw-r--r-- | clang/test/SemaCXX/cxx0x-defaulted-functions.cpp | 12 | 
2 files changed, 13 insertions, 1 deletions
diff --git a/clang/lib/Sema/SemaExpr.cpp b/clang/lib/Sema/SemaExpr.cpp index 6f23115f02a..3a33319c376 100644 --- a/clang/lib/Sema/SemaExpr.cpp +++ b/clang/lib/Sema/SemaExpr.cpp @@ -13012,7 +13012,7 @@ void Sema::MarkFunctionReferenced(SourceLocation Loc, FunctionDecl *Func,        if (MethodDecl->isDefaulted() && !MethodDecl->isDeleted()) {          if (MethodDecl->isCopyAssignmentOperator())            DefineImplicitCopyAssignment(Loc, MethodDecl); -        else +        else if (MethodDecl->isMoveAssignmentOperator())            DefineImplicitMoveAssignment(Loc, MethodDecl);        }      } else if (isa<CXXConversionDecl>(MethodDecl) && diff --git a/clang/test/SemaCXX/cxx0x-defaulted-functions.cpp b/clang/test/SemaCXX/cxx0x-defaulted-functions.cpp index 2aaf6197b64..16e20ff4964 100644 --- a/clang/test/SemaCXX/cxx0x-defaulted-functions.cpp +++ b/clang/test/SemaCXX/cxx0x-defaulted-functions.cpp @@ -196,3 +196,15 @@ namespace PR15597 {    A<int> a;    B<int> b; // expected-note {{here}}  } + +namespace PR27941 { +struct ExplicitBool { +  ExplicitBool &operator=(bool) = default; // expected-error{{only special member functions may be defaulted}} +  int member; +}; + +int fn() { +  ExplicitBool t; +  t = true; +} +}  | 

