<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">