JSF.MBR.SIG.MATCHES.COPY_CSTR

メンバー関数の定義には、対応するクラス/構造に対して暗黙に宣言されたコピーコンストラクタの署名と同一の署名を生成するデフォルト引数を含めてはなりません。

理論的根拠

この曖昧さを診断するためにコンパイラは必要ありません。

例 1

コピー
  struct X {
      X(const X&, int);
      X::X(const X& x, int i =0) { /* ...*/ }
  };

クラス定義でコピーコンストラクタが明示的に宣言されていない場合、暗黙に宣言されます。このため、詳細なクラス定義ではコピーコンストラクタが暗黙に宣言されます。ユーザー宣言コンストラクタが後から定義された場合 (3 行目を参照)、曖昧さが生じるため、X のコピーコンストラクタの使用は不適切とみなされます。