タグ

c++0xとコンストラクタに関するItisangoのブックマーク (1)

  • 例外オブジェクトとしてのクラス

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

  • 1