追記。正しくは、例外オブジェクトは、コピーかムーブのどちらかをサポートしていなければならないというものであった。つまり、コピーするのならば、ムーブは必要ないし、ムーブしかできないクラスも、例外オブジェクトたりえる。したがって、この記事の内容は誤りである。 例外として投げるオブジェクトのことを、例外オブジェクトという。例外オブジェクトがクラスのオブジェクトである場合、コピーコンストラクター、ムーブコンストラクター、デストラクターにアクセス可能でなければならない。(たとえ、使われなかったとしても) struct X { X() = default ; X( X const & ) = delete ; } ; void f() { throw X() ; // エラー、コピーコンストラクターにアクセスできない } しかし、これは非常にわかりにくいと思う。例えば、以下のコードは誤りである。 st