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

    <tr>
        <th>Summary</th>
        <td>
            Unable to compile the code since clang 16 with -std=c++2b
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            clang
      </td>
    </tr>

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

    <tr>
      <th>Reporter</th>
      <td>
          666melkor666
      </td>
    </tr>
</table>

<pre>
    The following code does not compile since clang 16 with c++23 standard. Everything is fine if c++20 is used.

`#include <memory>

struct A
{
    inline static std::unique_ptr<A> test_;
};

int main()
{
    return 0;
}`

Compiler output
`In file included from <source>:1:
In file included from /opt/compiler-explorer/clang-16.0.0/bin/../include/c++/v1/memory:898:
In file included from /opt/compiler-explorer/clang-16.0.0/bin/../include/c++/v1/__memory/shared_ptr.h:31:
/opt/compiler-explorer/clang-16.0.0/bin/../include/c++/v1/__memory/unique_ptr.h:63:19: error: invalid application of 'sizeof' to an incomplete type 'A'
 static_assert(sizeof(_Tp) >= 0, "cannot delete an incomplete type");
 ^~~~~~~~~~~
/opt/compiler-explorer/clang-16.0.0/bin/../include/c++/v1/__memory/unique_ptr.h:297:7: note: in instantiation of member function 'std::default_delete<A>::operator()' requested here
 __ptr_.second()(__tmp);
 ^
/opt/compiler-explorer/clang-16.0.0/bin/../include/c++/v1/__memory/unique_ptr.h:263:75: note: in instantiation of member function 'std::unique_ptr<A>::reset' requested here
  _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX23 ~unique_ptr() { reset(); }
 ^
<source>:5:38: note: in instantiation of member function 'std::unique_ptr<A>::~unique_ptr' requested here
 inline static std::unique_ptr<A> test_;
 ^
<source>:3:8: note: definition of 'A' is not complete until the closing '}'
struct A
       ^
1 error generated.`


</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy8Vktv4zYQ_jX0ZWBBIm09Djr4JcDAIg2atEhPAiWNLbYUqSWpbNPD_vaCkuzEu5tLi40AywQ1nMc3M9-QWyvOCjEn6y1Z7xd8cK02eRzHHcq_tInjeFHp5iV_bBFOWkr9Ragz1LpBaDRaUNpBrbteSAQrVI1QS67OEMXwRbgWakK3hG4pA-u4arhpAjg8o3lxrVckLJyEQhCnq2ToNweLTUDCPQk38zsOCWVC1XJoEAjbddhp80LY4a2UdWaoHVzOJNtpAQAglPSGrONO1GBdQ9iGsM2gxOcBy94ZwnYbwg7g0LqSsO1Fx_51Pb6FctBxoQhNCc1-YMmgG4yC8EZHHL7VsZsQM6AH1w_uGuJRwckjOcfZwMnozkdr9WBq9NGyTeQ9H0-8I04L3TtCizkvZol_91IbNH7PZ2cZxUEYhIQWlY-jCAJCi1mJl5kyQWjxHBFaXJDepFn6wabLcjZOC9tyg41PVNAStmGvKPxEo6_VMRqNmYc_I2wDaIw2fiHUM5eiAd73UtTcCa1An4DQxIp_UJ8ITcBp4MpDpbteokNwLz16kQ2hyVw4U2GW3Fo0jtD0cjotH3tCMxhzv4eQ0B0QSmuufOs1OOr7Xjuh1FfnpQSBrA9fr89H40azhLCN_3m-wAk2EMpTghNXzDrsKjRwGlQ9bnkML33a4IkP0pVTwHOvTp90j4Y7beaGpAkY_DygddhAiwZnBErvThlYrLVqLrJpWbqu_xapD8dnLKxk_X8A-o7Ipm2DFt27mED56bjd3d-Xx7tPx7tD-fvx4bg9fjo-_nH9svvl7uHx8HT_a_lwvNsdyt3TE2Xw9Y25EUogyRZmY-mEJ3je-xbTWyrzEbP0J4R94987wf_HifBuMD6HN7E0eBJKvGEE3-5-ul2G5titg3JCgmv95NTWD0VPCsn-Sg23Qw2m5-pENFERnFH5NvBj83bWLJqcNRnL-ALzKAlplNKU0UWbV3XNa8YTGoWrNIwoj-ImrSterdKsTtfZQuQ0pCyiURiuGFvTIK2RpilPMoppmkUpWYXYcSEDKZ-7QJvzQlg7YJ6sspgtJK9Q2vFmQenYL56U1vuFyb38shrOlqxCKayzrxqccBLz3xSvJHrivFwuRoD8teNHt4zlmL395QpRLQYj89a53vqc0oLQ4ixcO1RBrTtCC29t_lv2Rv-Jte_z0XlLaDH6_28AAAD__zezx_A">