in fatal/container/circular_queue.h [357:378]
void shift_to_back(Shifter &&shifter = Shifter()) {
assert(!queue_.empty());
auto const original = offset_;
auto const destination = loose_real_index(size_);
FATAL_ASSUME_LT(offset_, queue_.size());
if (++offset_ == queue_.size()) {
offset_ = 0;
}
FATAL_ASSUME_LT(offset_, queue_.size());
FATAL_ASSUME_LE(size_, queue_.size());
if (size_ < queue_.size()) {
auto &from = queue_[original].value;
shifter(
std::addressof(queue_[destination].value),
std::move(from)
);
from.~value_type();
}
}