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

    <tr>
        <th>Summary</th>
        <td>
            Copying of std::vector filled with neither copy constructible nor copy assignable elements
        </td>
    </tr>

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

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

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

<pre>
    This program
```c++
#include <concepts>
#include <vector>

struct A {
    A() {}
    A(const A&) = delete;
    A(auto &&) {}
    A & operator=(const A&) = delete;
};
static_assert(!std::copy_constructible<A>);

const std::vector<A> v(3);
// auto w{ v }; // fails both in libstdc++ and in libc++
auto w( v ); // ok in libc++
```
is rejected with `libstdc++`, but accepted with `libc++`, which looks incorrect.

Online demo: https://gcc.godbolt.org/z/v1MdbzMT1
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJyEU81uqzwQfZphM2rk2AScBQuafOyqb9N9ZZtJ8K2DI9skap_-yoT-pF1cCQlrzpkz_ypGexyJGtg8wmZfqCkNPjQd9aHQvn9rngcb8Rz8MagTsBYqdvsM8Mf8sRa4sKNxU08IYmf8aOicIoj_fmEXMsmHBWFtTGEyCVuEOusgIrbAJfDtbKn334zGjzHlVzXDYo89OUoE4rurmpLHmVP9VskA-jMFNSex_6dq9p0fMalkzYuKkUKaM1zH1INoQbTGn99eZp1cjNWOQOzaXCPfLjKsvcX59Pnow8zDC3Apvti8A97hXMkV6ke84C0PXJCDsi6i9mlAO6KzOqZ-GQaqsV-MX-NZlLjMSnOUDyX_-ov8OV5grY0Y6A-ZRD1ebRoQKnYXLtP4DvWUUJk89HviPes6WDOg8_41oh2ND4FMWt3a8__o7EjY08mDaHFI6Rxzp-Y0j8asjr7X3qWVD0fg3Tvw7rJ-6vX70_O66BvRb8VWFdSs67Lc1rWUrBgaJmup6rqsa3Goy1IdlDZVqQ6VVFoqtilswxnfsHIt15yVYrsiLkvJhdJay0rLHkpGJ2XdyrnLKccubIwTNWtR8a0snNLk4nw4nI90xRkFzvMdhSY7PejpGKFkzsYUv2SSTY6anT-_2fGI_vBzM_Bgnfto5kg2DRQwLxreLRqOfjHfrlhlGzk60ZhiMQXX_OikTcOkV8afgHc5meX3cA4-zxl4N5cQgXdLjZeG_w0AAP__3V07xQ">