Quuxplusone added a comment.
I've found another case that Clang has never handled correctly (and which your
patch does not fix)—
https://godbolt.org/z/xd8qGW
struct Widget {};
struct Frodo {
Frodo(Widget&);
Frodo(Widget&&) = delete;
};
Frodo twelve() {
Widget w;
return w; // according to the majority of vendors, the first pass should
not "fail";
// it should successfully find the deleted overload and
hard-error at that point.
// This has been the case ever since C++11, AFAIK.
}
This example will be mentioned in my upcoming (not-yet-finished) WG21 paper
P2266 <https://wg21.link/p2266>, as an example of why the two-pass mechanism
sucks and should be removed from C++2b.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D88220/new/
https://reviews.llvm.org/D88220
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits