-
Notifications
You must be signed in to change notification settings - Fork 15.2k
Open
Labels
libc++libc++ C++ Standard Library. Not GNU libstdc++. Not libc++abi.libc++ C++ Standard Library. Not GNU libstdc++. Not libc++abi.rejects-valid
Description
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.
Metadata
Metadata
Assignees
Labels
libc++libc++ C++ Standard Library. Not GNU libstdc++. Not libc++abi.libc++ C++ Standard Library. Not GNU libstdc++. Not libc++abi.rejects-valid