プログラミング言語C++における特殊メンバ関数(special member functions)のユーザ宣言/コンパイラ暗黙宣言に関するメモ。本記事の内容はACCU 2014でのHoward Hinnant氏プレゼン(PDF) "Everything You Ever Wanted To Know About Move Semantics (and then some)" に基づく。 下記6つが特殊メンバ関数として扱われる。これらのメンバ関数は、“宣言なし”、“暗黙の宣言(defaulted/deleted)”、“ユーザ宣言(=default/=delete/ユーザ定義)”のいずれかとなる。 デフォルト・コンストラクタ X() デストラクタ ~X() コピー・コンストラクタ X(const X&) コピー代入演算子 X& operator=(const X&) ムーブ・コンストラクタ X