On Sun, Jan 22, 2012 at 7:19 PM, Nico Weber <[email protected]> wrote: > Author: nico > Date: Sun Jan 22 21:19:29 2012 > New Revision: 148675 > > URL: http://llvm.org/viewvc/llvm-project?rev=148675&view=rev > Log: > In ms mode, a move assignment operator shouldn't mark a copy ctor as deleted. > > MSVC2010's pair class has a move assignment operator but no explicit copy > constructor, which makes it unusable without this change. > > For symmetry, let move copy constructors not mark the default assignment > operator as deleted either. Both changes match cl.exe's behavior. Fixes > pr11826. > > Also update the standard excerpt to point to the right paragraph. > > > Modified: > cfe/trunk/lib/Sema/SemaDeclCXX.cpp > cfe/trunk/test/SemaCXX/microsoft-cxx0x.cpp > > Modified: cfe/trunk/lib/Sema/SemaDeclCXX.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaDeclCXX.cpp?rev=148675&r1=148674&r2=148675&view=diff > ============================================================================== > --- cfe/trunk/lib/Sema/SemaDeclCXX.cpp (original) > +++ cfe/trunk/lib/Sema/SemaDeclCXX.cpp Sun Jan 22 21:19:29 2012 > @@ -7846,12 +7846,14 @@ > PushOnScopeChains(CopyAssignment, S, false); > ClassDecl->addDecl(CopyAssignment); > > - // C++0x [class.copy]p18: > - // ... If the class definition declares a move constructor or move > - // assignment operator, the implicitly declared copy assignment operator > is > - // defined as deleted; ... > - if (ClassDecl->hasUserDeclaredMoveConstructor() || > - ClassDecl->hasUserDeclaredMoveAssignment() || > + // C++0x [class.copy]p19: > + // .... If the class definition does not explicitly declare a copy > + // assignment operator, there is no user-declared move constructor, and > + // there is no user-declared move assignment operator, a copy assignment > + // operator is implicitly declared as defaulted. > + if ((ClassDecl->hasUserDeclaredMoveConstructor() && > + !getLangOptions().MicrosoftExt) ||
This should be checking for MicrosoftMode. -Eli _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
