in dispenso/concurrent_object_arena.h [274:299]
friend void swap(
ConcurrentObjectArena<T, Index, alignment>& lhs,
ConcurrentObjectArena<T, Index, alignment>& rhs) noexcept {
using std::swap;
swap(lhs.kLog2BuffSize, rhs.kLog2BuffSize);
swap(lhs.kBufferSize, rhs.kBufferSize);
swap(lhs.kMask, rhs.kMask);
const Index rhs_pos = rhs.pos_.load(std::memory_order_relaxed);
rhs.pos_.store(lhs.pos_.load(std::memory_order_relaxed), std::memory_order_relaxed);
lhs.pos_.store(rhs_pos, std::memory_order_relaxed);
const Index rhs_allocatedSize = rhs.allocatedSize_.load(std::memory_order_relaxed);
rhs.allocatedSize_.store(
lhs.allocatedSize_.load(std::memory_order_relaxed), std::memory_order_relaxed);
lhs.allocatedSize_.store(rhs_allocatedSize, std::memory_order_relaxed);
T** const rhs_buffers = rhs.buffers_.load(std::memory_order_relaxed);
rhs.buffers_.store(lhs.buffers_.load(std::memory_order_relaxed), std::memory_order_relaxed);
lhs.buffers_.store(rhs_buffers, std::memory_order_relaxed);
swap(lhs.buffersSize_, rhs.buffersSize_);
swap(lhs.buffersPos_, rhs.buffersPos_);
swap(lhs.deleteLater_, rhs.deleteLater_);
}