gpt4 book ai didi

c++ - 如果 T1 和 T2 有, std::pair 不应该有微不足道的默认构造函数吗?

转载 作者:IT老高 更新时间:2023-10-28 22:40:44 26 4
gpt4 key购买 nike

我遇到了问题,因为

 std::is_trivially_default_constructible<std::pair<T1,T2>>::value == false;

即使

 std::is_trivially_default_constructible<T1>::value == true;
std::is_trivially_default_constructible<T2>::value == true;

我没有找到这个设计的充分理由。不适合 std::pair<T1,T2>有一个=default构造函数 if T1T2有吗?

有没有简单的解决方法(比定义我自己的 pair<> 更简单)?

最佳答案

原因很简单:历史!原文std::pair<T0, T1>不能有一个微不足道的默认构造函数,因为它有一些其他构造函数。它被定义为初始化其成员。在 std::pair<T0, T1> 中更改此行为对于人们依赖初始化值的简单可构造类型将是一个重大变化。

除了历史原因,std::pair<...> 的默认构造函数被定义为 constexpr构造函数。一个 constexpr默认构造函数不能默认。

除了创建自定义类之外,我不知道有什么解决方法。

关于c++ - 如果 T1 和 T2 有, std::pair<T1,T2> 不应该有微不足道的默认构造函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26591957/

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