std::swap
C ++標準は、例外をスローしないことを保証します。ただし、スワップするオブジェクトがスワップ中に例外をスローした場合はどうなりますか?次に、呼び出し元は例外が発生したことをどのように見つける必要がありますか?発信者はどのような対策を講じる必要がありますか?
PS:コンストラクターが例外をスローすることは非常に一般的です。
struct A
{
A(const A&)
{
throw 1;
}
A& operator =(const A&)
{
throw 2;
return *this;
}
};
int main()
{
A a1, a2;
std::swap(a1, a2); // An exception happened, but the caller doesn't know.
// How to do here ???
}