<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=http://email.email.llvm.org/c/eJy9VU1vozAQ_TXmYm1ETAhw4JAmrdRDpa60Uo-RsQfwxsHINsm2v37HkKZNtuoe9kMyGNsz4zfzZobKyOey9b53JFkRdocDupnoews1WOgEzITZ4-4RH9zGt28tcIkfPRc73oDceu52v6zjDYlXWlWCsBsc1HmlNeVCQO8d9a1ylCzjS51lTIXpnLeD8MZS1dH1pD3P6N5IIGxNq8FT5alrzaBlR1jmETm9dKExsjLaz4xtcPWCz0O3fEhfTM4nXHjTaUxLlqhO6EECJcm6HvxggSS3p8PxPYGiK0qyG4oKueo8YQVJbnBng9MkNjjVNfQRxZINuiwDpGR16WWyfq9_e617_7nuqPeB9itM7pXYcufABjnC5mdLym3P0VWVRg_Xj6sQ0rME19oIjqHfctts_cdnI368GA9HczQYWY5QgtyB62EkijA2juIM8Roc_ffQ7n8LjU4pc0ooWgGtuXZwkXz_H_7EMmGrAPKC7r_gyFX2fwu1eOSOSuWEOWDZS1QSSkLnEdszPbZKAz0auwsJarqrarNwUHB0M60P-1PJbebzokjz95n51BpA21Qbs3PBPzM1gRPcWnWSGqztY8s97XmPohb2CEdOcqEjBJc5yh1b8C0KYB94lcEgYcfgUgK2pjlGBAWfUREBQ4iCN2ZGn4DuVdP6EJy9cmO9uYCKazSkuZ8u6xpHEYQJ3S-SZSKLpOARH3xrbPl1GH70enCmg2iw-qp5Nsq3Q3XqmSEgp-lLb813EMjiHd47gMOPNCnmLGrLuq5ywSohWb7gy6rOYyZ4XvAqg5gvaog0r9CHkqRIIntrqYH5dBP9OQRVspjhmGcsjpeLeCarmqdFmmVxli5SKMgihj1X-kxxZMvRZDU0Dg-1cv6N_wgrRDUdwIgYEXrl9bh4hz3d0Kv_R_5ZsUzlvDpXClY17t6N8zKw_Zb1DTJz-esIKRPItdHoeDl6_RM7diuj>53912</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [libc++] packaged_task(std::allocator_arg_t, const Allocator&, F&&) should be gone in C++17 and later
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            libc++
      </td>
    </tr>

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

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

<pre>
    https://en.cppreference.com/w/cpp/thread/packaged_task/packaged_task
libc++ still accepts this `packaged_task` constructor in C++17 mode, but it shouldn't: https://godbolt.org/z/Mn6M5zo8a
```
#include <future>

struct A { A(int); };
using PA = std::packaged_task<A(int)>;
using PI = std::packaged_task<int(int)>;

static_assert(!std::is_constructible<PA, std::allocator_arg_t, std::allocator<A>, const PA&>::value, "");
static_assert( std::is_constructible<PA, std::allocator_arg_t, std::allocator<A>, const PI&>::value, ""); // should be false in C++17
static_assert( std::is_constructible<PA, std::allocator_arg_t, std::allocator<A>, int(*)(int)>::value, ""); // should be false in C++17
```
This was discovered incidentally while working on https://reviews.llvm.org/D119958

Whoever looks into this should find out what paper removed this ctor, and whether it removed (or added!) anything else too. We might be missing several related things at once.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy9VMlu2zAQ_RrqMqihxZKlgw5eEiCHAClQIEeDImmJNS0KXOwmX9-h5DqxG6SXtgAlSuQM-d7Mm2k0f6k75wZLsiVJ73GIfsaGwYidMKJnYsb0AVdP-OAyvl1nBOX4MVC2p63gW0ft_rf_eEPipZINI-kKB1gnlQLKmBicBddJC6SIr32KGJjurTOeOW1A9rCevJMFHDQXJF1D4x1IB7bTXvGepAuHyOGaQqt5o5WbadPi3ys-j33xmL_qkk648KbzmH7TTPZMeS6AZOudd94Ikt2dN8f3BAqWQBYrQIdS9o6kFclWuLLBaTLzVvYtPKFZtkHKPEDKltcss_V7_7tb34fPfUe_D7x_waROsi21VphgR9LkcpK020t0ZaOQ4fppGUJ6saBKaUYx9Ftq2q37eG_Ejxfj5ngchEOKEUqwO1Llx0SRNB1HdYF4Cw7-PbSHP0KDSTJnQUEjYEeVFVfi-__wpyyTdBlAXqX7LxC5Uf-3UIsnaoFLy_QRy56jE5Nc9A6xvcCpk0rASZt9EKjub6rNiKMUJztT6ng4l9wmSaoqL98r87nTAs8GpfXeBn56agJnuDvZc9BY26eOOhjogKZGHBAOn-xCRwiUKdqdOuE6NMA-8MsGg4Qdg3IusDUlGBE0fEFHBCxCFJzWM3gWcJBt50JwDtKO9WYDKqrwIEXddFnfWkAQOnS_iNcZr7KKRk46JWqSr96aGsk3cNMFy89SPolyeck3ahNX78e5CJjfctfq_jp1I_EA0UTeqJue3UrX-ebcqkMeztOXwejvguHl90jXC4sfeVYladTVTZlxStN5ntOS5tm8KpOEcR6X8zwpih2NFG0wdIExauwdaRRcvolkncYpjmSRxnExj2e82dG8yheLeJHPc1GReSwOVKqLLiJTj5ga31rcVNK6N9FEWFay7cUY4XA-9a7Tpv7q_Y9BeYvhiEYK9Yj_JyA1FN0">