[PATCH] D99005: [clang] Implement P2266 Simpler implicit move

Matheus Izvekov via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Tue Jul 6 08:09:20 PDT 2021


mizvekov added a comment.

In D99005#2859476 <https://reviews.llvm.org/D99005#2859476>, @aaron.ballman wrote:

> https://godbolt.org/z/dvEbv7GKo
>
> I'm not certain if this is as expected of an issue, though. In the original example, `C` carried state that was set up after initialization but was relying on the fallback to the non-idiomatic copy constructor when doing the `throw`. WDYT?

Yeah that is the equivalent scenario for `throw`, we treat c1 as a temporary there. The same workaround applies, you can static cast to non-const lvalue reference.

As far as the implementation is concerned, it is following the proposal to the letter here.
And as I understand it, although I am not the author of the proposal (which is @Quuxplusone), the committee agrees that this breakage is a good thing.

In D99005#2859652 <https://reviews.llvm.org/D99005#2859652>, @aaron.ballman wrote:

> I'm not certain it's reasonable to wait for MSVC STL to change as that leaves every existing user of older MSVC STLs out in the cold. This is causing some significant regressions at Intel, to the extent that I wonder if this should be temporarily reverted until the MSVC STL headers can be compiled again.

That does interfere with the wishes of the committee to get implementation experience with this.
I am not saying one way or another, but would leaving this effect on by default, but providing a command line flag to turn it off, be a reasonable option on the table?


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D99005/new/

https://reviews.llvm.org/D99005



More information about the cfe-commits mailing list