gpt4 book ai didi

c++ - 为什么存在用户声明的析构函数时生成移动构造函数?

转载 作者:太空宇宙 更新时间:2023-11-04 15:57:53 25 4
gpt4 key购买 nike

<分区>

正在关注 this answerthis move-constructor specification ,不应有隐式移动构造函数或移动赋值运算符。

但是,以下代码仍然可以在 gcc 7.2.1 中编译:

#include <vector>
#include <iostream>
using namespace std;

struct NoCopyNoMove
{
NoCopyNoMove(const NoCopyNoMove&) = delete;
NoCopyNoMove& operator=(const NoCopyNoMove&) = delete;
NoCopyNoMove(NoCopyNoMove&&) = delete;
NoCopyNoMove& operator=(NoCopyNoMove&&) = delete;

NoCopyNoMove(int){};
};

struct NoCopy
{
NoCopy(const NoCopyNoMove&) = delete;
NoCopy& operator=(const NoCopyNoMove&) = delete;
// NoCopy(NoCopy&&) = delete;
// NoCopy& operator=(NoCopy&&) = delete;
~NoCopy() {
std::cout << "decontructor" << std::endl;
}
NoCopy(int){};
};

int main()
{
// vector<NoCopyNoMove> y; // fails!
vector<NoCopy> y;
y.emplace_back(1);
y.emplace_back(2);
}

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com