Add STL-like swap function