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

    <tr>
        <th>Summary</th>
        <td>
            [libc++] deque::prepend_range rejects some valid code
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            libc++,
            rejects-valid
      </td>
    </tr>

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

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

<pre>
    ```c++
struct InPlaceOnly {
  constexpr InPlaceOnly() {}
  InPlaceOnly(const InPlaceOnly&) = delete;
  InPlaceOnly(InPlaceOnly&&) = delete;
 InPlaceOnly& operator=(const InPlaceOnly&) = delete;
  InPlaceOnly& operator=(InPlaceOnly&&) = delete;
};

struct EmplaceConstructible {
 EmplaceConstructible(const EmplaceConstructible&) = delete;
 EmplaceConstructible& operator=(const EmplaceConstructible&) = delete;
 EmplaceConstructible& operator=(EmplaceConstructible&&) = delete;
 EmplaceConstructible(EmplaceConstructible&&) = delete;
  constexpr EmplaceConstructible(const InPlaceOnly&) {}
};

template <template <class...> class Container>
constexpr void test_sequence_prepend_range_emplace_constructible() {
  InPlaceOnly input[5];
 types::for_each(types::cpp20_input_iterator_list<InPlaceOnly*>{}, [&]<class Iter> {
    std::ranges::subrange in(Iter(input), sentinel_wrapper<Iter>(Iter(input + 5)));
 Container<EmplaceConstructible> c;
    c.prepend_range(in);
 });
}
```
This code is correct, but currently rejected by our `deque::prepend_range` implementation.
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJysVU2v6yYQ_TV4M7oWAX_ECy8S50Z6q3bRvYXxJOGVYBfwbfPvK3C-5Vf1VZWQQoA5c86ZAQvn1NEg1iTfknyXiMmfBluPJ6WN-r0sy6Qb-ktNCjoPSdg2DLpx3k7SwzfzqxYSfzH6AqQMGwByMM7jX6N93iVsTVgVz5S7eOx1Mwa9rhUxgO-gR40eCd8uxL1HLAe9noJhRCv8YAnf_ffU7zD_ikkQP0_uFn6exxDXBBZhQXUab14u7d0ZL28uU__B2UUn_n_cHyL-DOjPojz14T_auFD4W5M-V8tjAPEIhDfPc6mFc2maEv4JcQ7NYLxQBi3hn4RuHjS-BtWDR-dbh39MaCS2o8URTd9aYY7Y4syzlW9Eb6TeehCUGSdP8m1O8itR8JcRHeEbwjeHwbYo5Imw9dOqHEdG2xjZKj9XqdXKecKbFys2gf7sBGsgPBCsiHlmyfDNR4V3YgDO93OOqOaaz01d_AvKhEsSgth6Js6qgOzQeGVQt39aMY4Bs7lCv50HwraQx6g4ZsFPbjeLdQ51ubUEgExfLI_YD7AotnpcVbq5P32Ebn47KQdy6BHir7UofVDQTR7kZC0ary9g8TtKjz10FxgmC6SgfSj3bMdr9oKCOo8az2i88GowadLXvK94JRKsV2VeVRXPsiw51auu69ai43nGygPnRSV7Kg583a0zKamQiaoZZfmK0oqWNKNZejiwAwq5yvEgaZWXJKN4FkqnWn-d08EeE-XchPWqYAXNEy061C5-CRjTqru99YwR1hDGZl3u40to1YfVfJfYOmB9dNPRkYyGLnIPdK-8jl-WJ7A8XNJlM67GOXDDGSFmiWYnk9X1yfsxNhTbE7Y_Kn-aulQOZ8L2Id_152O0w_dYlH2U5gjbX9V91ezvAAAA__8mvjGH">