My understanding is that C++ implicitly generated assignment operator does a member-wise copy (this seems confirmed also by this answer). But, if during a member copy an exception is thrown (e.g. because a resource for that member can't be allocated), will the object being copied be stuck in an invalid state?
In other words, does the implicitly generated assignment operator achieve only the basic guarantee, but not the strong guarantee?
If we want the strong guarantee for our class copies, must we implement the assignment operator manually with the copy-and-swap idiom?