こんにちは、簡単な質問があります。たとえば、整数を取るコンストラクターを持つクラスがある場合、そのクラスのオブジェクトをコピー初期化すると、コピー コンストラクターまたはコンストラクターが呼び出されます。
class M
{
public:
M(int) { cout << "M(int)\n"; }
M(const M&) = delete;
M(const M&&) = delete;
};
int main()
{
M m = 9; // why M(int) is called but not a copy-ctor or move-ctor?
}
- ご覧のとおり、ここにはあいまいさがあります。
M m = 9;
これは一種の形式だとCopy-initialization
思うので、通常は copy-ctor または move-ctor を呼び出す必要があると思います。コンパイル時エラーを取得するためにテーマの削除を宣言しましたが、機能しますか?