[clang] [Clang] [C++26] Implement P2573R2: `= delete("should have a reason");` (PR #86526)
via cfe-commits
cfe-commits at lists.llvm.org
Mon Apr 8 22:54:42 PDT 2024
Sirraide wrote:
> I wanted to make you aware of this new core issue https://cplusplus.github.io/CWG/issues/2876.html (which i think we should have tests for). Thanks
So, as of now, this
```c++
using T = void ();
using U = int;
T a = delete ("hello");
U b = delete ("hello"), c, d = delete ("hello");
struct C {
T e = delete ("hello");
U f = delete ("hello");
};
```
gives
```
test.cc:4:7: error: only functions can have deleted definitions
4 | T a = delete ("hello");
| ^
test.cc:5:7: error: only functions can have deleted definitions
5 | U b = delete ("hello"), c, d = delete ("hello");
| ^
test.cc:5:32: error: only functions can have deleted definitions
5 | U b = delete ("hello"), c, d = delete ("hello");
| ^
test.cc:8:8: error: '= delete' is a function definition and must occur in a standalone declaration
8 | T e = delete ("hello");
| ^
test.cc:9:8: error: cannot delete expression of type 'const char[6]'
9 | U f = delete ("hello");
| ^ ~~~~~~~~~
```
which seems reasonable to me—unless there’s something I’m missing here, but it’s ill-formed either way, so so long as we’re diagnosing it, we’re fine, from what I can tell at least.
One thing I did just now is made sure we discard the `("message")` if we encounter `= delete` in a place where it doesn’t belong so we don’t issue two errors instead of one (there was a ‘missing semicolon at end of declaration’ error that imo is just noise in this context).
https://github.com/llvm/llvm-project/pull/86526
More information about the cfe-commits
mailing list