This is an archive of the discontinued LLVM Phabricator instance.

Update status
ClosedPublic

Authored by zoecarver on Jun 5 2019, 2:22 PM.

Details

Summary
  • 2750 nothing to do because std::experimental::optional no longer exists.
  • 2969 commited.
  • 2696 because it has already been implemented and tests exist.
  • 2451 nothing to do because std::experimental::optional no longer exists.

Diff Detail

Event Timeline

zoecarver created this revision.Jun 5 2019, 2:22 PM
zoecarver updated this revision to Diff 203249.Jun 5 2019, 2:24 PM
  • updated wrong issue (oops)
ldionne accepted this revision.Jun 5 2019, 2:36 PM

2750 nothing to do because std::experimental::optional no longer exists.

This is correct, however the current wording for optional::optional(U&&) does NOT have a condition like !std::is_same<T, std::remove_reference_t<U>>::value. Was it "forgotten" when we Standardized std::optional? If so, then maybe we need to create a LWG issue.

This revision is now accepted and ready to land.Jun 5 2019, 2:36 PM
zoecarver updated this revision to Diff 203254.EditedJun 5 2019, 2:41 PM
zoecarver edited the summary of this revision. (Show Details)
  • mark another issue complete

@ldionne I talked with @mclow.lists about this because I was wondering the same thing. He is looking into it.

It seems like an odd constraint to have because there is no other constructor which would allow for constructing an optional<T> with a T.

2750 nothing to do because std::experimental::optional no longer exists.

This is correct, however the current wording for optional::optional(U&&) does NOT have a condition like !std::is_same<T, std::remove_reference_t<U>>::value. Was it "forgotten" when we Standardized std::optional? If so, then maybe we need to create a LWG issue.

I'm looking into that; that portion of the standard has seen a lot of churn.

mclow.lists closed this revision.Jun 5 2019, 2:49 PM

Committed as revision 362659