update hash and variant copy constructor/assignment operator