gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:40:33 25 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构造函数如果 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/51865617/

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