<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/63012>63012</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            Abstract function parameters are not allowed in deleted functions
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          m42a
      </td>
    </tr>
</table>

<pre>
    The following code does not compile with clang:
```c++
struct foo {
    virtual ~foo() = 0;
};
void f(foo) = delete;
```
because `foo` is an abstract class.  When the standard prohibits abstract parameters in function definitions, it specifically exempts deleted functions:
> [The type of a parameter or the return type for a function definition shall not be a (possibly cv-qualified) class type that is incomplete
or abstract within the function body unless the function is deleted](http://eel.is/c++draft/dcl.fct.def.general#2)

Clang also prohibits abstract types from appearing in the parameter lists of function declarations and requires expressions, but AFAICT the standard does not prohibit those either.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJxsVE2P5CYQ_TX4UhqLxm2P--BDz3Rayn2lnMtQtIkweCk8s3PJb49wf02UlZCNoaBevffKyOwugWgQ7ZtoTxWueYppmPcKqzGar-HHRGCj9_HThQvoaAhMJIYQM-g4L84TfLo8gfYYLqI5CnkS8ig6eR1aqLcytlXOadUZbIwgXm9rAAAfLuUVPfxjYxSqF-oAojmBFM0tSLyeHvOP6AxYofot-BppyFOmZ_g9-_VzJI0rE4hOljOdBMeAAXDknFDngp25BvhrogB5IuCMwWAysKQ4udFlfgYvmHCmTInBBbBr0NnFAIasC65MWah3cBl4Ie2s0-j9F9AvmpfMN6TmcY6flDV_gGjfCuH5ayGIFvCZDGLakCXKawrXCBsT4O8QAE_o_abRSIAgVL9EZjf6L9AfLz9X9M46MoW-rfbrfXnCXKhxoSi7MbohK2nu1Ret3ZWkR-JiFFiDp3LR9w33qFe0J6H6Keel1KvOQp2JfO1YqPPNIiahzUKdjfa11bk2ZOsLBUrohWqUUIcbT9vzvdgN0HP8nUalHAab4gy4LISpmPcG-0mpd5y58PyNQu0x4SYMYDCQ6OfqEjHQryUR813ecc1wPB__fP_xX788euMOCvIUmYBcnijVlRkac2gOWNGw6_p238mmbatp6Enumte9lKPscS-bkax9HTvZ7Uccu95UblBSNbJt5K5VbburlWkPPVGvD-NuZ-RO7CXN6Hzt_cdcx3SpHPNKQ9fInao8juR563KlAn3CtimUKk2fhnLmZVwvLPZyY-V5S3bZ03C8M_ug6lsbYKKtZiy_CTKF6P_ZvFqTH4r-_DDAxeVpHWsdZ6HOJd_t9bKk-Dfp4oUNZfHIVsW_AQAA__-2yI5A">