Add equality and assignment operators
Add a non-move version of apply_visitor