gpt4 book ai didi

c++ - 为什么pair of const 可以轻易复制,而pair 却不能?

转载 作者:行者123 更新时间:2023-12-02 10:02:48 26 4
gpt4 key购买 nike

std::cout << std::boolalpha;
std::cout << std::is_trivially_copyable< std::pair<const int,int> >::value;
std::cout << std::is_trivially_copyable< std::pair<int,int> >::value;

当我使用 GCC 9.2 时,输出为 true false

当我使用 Clang 5.0 或 GCC 5.2 时,输出为 false false

为什么会有差异?

最佳答案

std::pair有一个不平凡的复制赋值和移动赋值运算符。这可以防止它被轻易复制。

自 C++17 起,如果两个包含的类型之一不可赋值,则复制/移动赋值运算符被定义为已删除,这解除了对可平凡复制的限制。这里就是这种情况,因为 const int不可复制分配或移动分配。

C++17 还规定,如果两个类型具有平凡析构函数,则该对也将具有平凡析构函数,这是平凡可复制的另一个要求。

您测试的较旧编译器可能不完全支持 C++17,这会阻止该对被轻松复制,即使对于 pair<const int, int> 也是如此。 .

关于c++ - 为什么pair of const 可以轻易复制,而pair 却不能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58283694/

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