You can only call the constructor for an object once. After that, the object is already constructed, and cannot be constructed a second time.

You can destroy the object and reconstruct it in place:

a.~A();
::new (&a) A();

If you find yourself needing to do this often, it's better to just provide a .clear() member or something similar... or maybe just not delete the assignment operator. You haven't provided enough detail.

Email codedump link for Value replacement without using the assignment operator