38 concept RowDequeLike =
requires(Q q,
const Q cq, T item,
size_t n, std::vector<T> batch) {
40 { q.push_back(std::move(item)) } -> std::same_as<void>;
41 { q.append_rows(std::move(batch)) } -> std::same_as<void>;
42 { q.pop_front() } -> std::same_as<T>;
43 { q.drain_front(batch, n) } -> std::same_as<size_t>;
44 { cq.empty() } -> std::same_as<bool>;
45 { cq.is_waitable() } -> std::same_as<bool>;
46 { q.wait() } -> std::same_as<void>;
47 { q.notify_all() } -> std::same_as<void>;
48 { q.kill_all() } -> std::same_as<void>;
49 { cq.size() } -> std::same_as<size_t>;