rsmith added a comment.

In D88295#2365312 <https://reviews.llvm.org/D88295#2365312>, @Quuxplusone wrote:

> I believe the organization of that directory implies that the path should be 
> `class/class.init/class.copy.elision/`, not `special/class.copy/`.
> Otherwise LGTM, and I like this new test better than the old one!
> I still can't help re actually landing this patch, as I don't have 
> permissions either.
>
> EDIT: Actually I take that back; I don't understand why any existing test 
> would have the path `special/class.copy/`, since no section by that name 
> exists in the Standard. So, I defer to anybody with a strong opinion on the 
> matter.

It's historical; we haven't reorganized our tests in response to the subclauses 
in the standard being reorganized, and (for example) in C++98 the copy elision 
wording was in subclause 12.8 [class.copy], within Clause 12 [special]. Moving 
the test to `class/class.init/class.copy.elision/p1.cpp` would make sense to 
me. Otherwise the change to copy elision looks good; the history here is long 
and subtle, but the status quo after P1825R0 (which was moved as a DR) is clear 
that volatile objects are not implicitly movable.

However, it looks like this change also affects users of `CES_AsIfByStdMove`, 
and for "as if by `std::move`" semantics, I don't think `volatile` variables 
should be ignored. This affects two things:

One is whether we produce the warning suggesting use of `std::move`. For 
example, given:

  X f() {
    volatile X x;
    return x;
  }

... where `X` has a volatile copy constructor and a volatile move constructor, 
I think we should produce the warning suggesting use of `std::move`.

The other is whether implicitly move in a `co_return` statement. In that case, 
I think the use of `CES_AsIfByStdMove` is a mistake, and we should be using 
`CES_Default` there.

So, how about we add another `CES` flag to indicate whether we should reject 
variables with volatile-qualified type, and set it for `CES_Default` but not 
for `CES_AsIfByStdMove`, and also change the `co_return` handling to use 
`CES_Default`?


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D88295

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to