ここで StackOverflow を見ると、Clang++ で C++11 標準を使用しているときに、クラスに移動コンストラクターを定義している場合、暗黙的なコンストラクターの生成が無効になっていることがわかりました。つまり、コピー コンストラクターは「明示的に削除」されます。
この動作を無効にする方法はありますか?
また、この動作は標準化されていますか? 私はGCCで同じ振る舞いをしていないからです。
この動作を無効にする方法はありますか?
いいえ。ただし、いつでも次のことができます。
A(const A&) = default;
ただし、clang が現在デフォルトのコピー コンストラクターを完全に実装しているかどうかはわかりません。
また、この動作は標準化されていますか?
はい。[class.copy]/p7:
クラス定義でコピー コンストラクターが明示的に宣言されていない場合は、暗黙的に宣言されます。クラス定義でムーブ コンストラクターまたはムーブ代入演算子が宣言されている場合、暗黙的に宣言されたコピー コンストラクターは削除済みとして定義されます。...
...
私はGCCで同じ振る舞いをしていないからです。
どのバージョン?最新の gcc バージョンは、clang と同じ動作をしていると思います。しかし、私は実験するために利用できるものを持っていません。