>>330
> その swapは例外を投げない保証をする必要ありますか?
ある。

>>330 のコードにおいて、swap が例外を発生させる場合を考えると、
>>322 の 2. を満たすためには、
operator= は以下のように直す必要があるが …

this_type & operator=( this_type const & rhs )
{
 this_type temp( rhs );
 ... // this の状態を保存する。※1
 try { temp.swap( *this ); }
 catch( ... )
 {
  ... // this の状態をもとにもどすコードを入れる ※2
  throw;
 }
 return *this;
}
ここで、※ にどのようなコードを入れればいいかを考えるといい。

さらに、A.swap( B ) において、A のメンバの一部と、Bのメンバの1部だけが
入れ替わった状態で例外が発生すると、>>322 の 2. を満たせなくなる。

面倒なことをイロイロ考えなくてもいいように、swap は例外を出しちゃ駄目ってことになってるの。