This is an archive of the discontinued LLVM Phabricator instance.

Implement LWG 2904.
ClosedPublic

Authored by mpark on Jun 6 2017, 3:54 PM.

Details

Summary
  • Removed the move-constructibe requirement from copy-assignable.
  • Updated __assign_alt such that we direct initialize if _Tp can be nothrow-constructible from _Arg, or _Tp's move construction can throw. Otherwise, construct a temporary and move it.
  • Updated the tests to remove the pre-LWG2904 path.

Depends on D32671.

Diff Detail

Repository
rL LLVM

Event Timeline

mpark created this revision.Jun 6 2017, 3:54 PM
CaseyCarter edited edge metadata.Jun 6 2017, 5:21 PM

Looks good to me, although I am unfamiliar with your variant implementation. I won't approve the revision so that Eric will have to look at it, but consider me signed off.

EricWF accepted this revision.Jun 7 2017, 2:10 AM

LGTM too. please update cxx1z_status.html as well.

This revision is now accepted and ready to land.Jun 7 2017, 2:10 AM
mpark updated this revision to Diff 101683.Jun 7 2017, 3:20 AM

Rebased.

This revision was automatically updated to reflect the committed changes.