Although similar to PureQueue, it doesn't make sense to use the exact same signatures. Also don't make API users use Pair<D, P>.