Deleted function can return incomplete type · Issue #52802 · llvm/llvm-project (original) (raw)

The following program is valid:

struct A;
A f() = delete;

It is accepted by GCC, but rejected by Clang with the error:

error: incomplete result type 'A' in function definition

which is wrong per https://timsong-cpp.github.io/cppwp/n4868/dcl.fct.def#general-2.sentence-3

Demo: https://gcc.godbolt.org/z/937PEz1h3

Related discussion: https://stackoverflow.com/q/70410542/7325599