reference emplace_front()

in fatal/container/circular_queue.h [204:221]


  reference emplace_front(UArgs &&...args) {
    FATAL_ASSUME_LE(size_, queue_.size());
    if (size_ == queue_.size()) {
      grow();
    }
    FATAL_ASSUME_LT(size_, queue_.size());

    auto offset = offset_ > 0 ? offset_ - 1 : offset_ = queue_.size() - 1;
    FATAL_ASSUME_LT(offset, queue_.size());

    auto p = new (std::addressof(queue_[offset].value)) value_type(
      std::forward<UArgs>(args)...
    );

    offset_ = offset;
    ++size_;
    return *p;
  }