Figured out the infinite swap issue... don't use swap in your operator=, kids