次の点を考慮してください。
class Example : boost::noncopyable
{
HANDLE hExample;
public:
Example()
{
hExample = InitializeHandle();
}
~Example()
{
if (hExample == INVALID_HANDLE_VALUE)
{
return;
}
FreeHandle(hExample);
}
Example(Example && other)
: hExample(other.hExample)
{
other.hExample = INVALID_HANDLE_VALUE;
}
Example& operator=(Example &&other)
{
std::swap(hExample, other.hExample); //?
return *this;
}
};
ここでの私の考えでは、デストラクタはまもなく「その他」で実行されるため、スワップを使用して移動代入演算子でデストラクタ ロジックを再度実装する必要はありません。しかし、それが合理的な仮定であるかどうかはわかりません。これは「大丈夫」でしょうか?