gpt4 book ai didi

c++ - 为什么 libstdc++ 以相反的顺序存储 std::tuple 元素?

转载 作者:可可西里 更新时间:2023-11-01 18:26:21 27 4
gpt4 key购买 nike

根据 Link ,关于 std::tuple...

libstdc++ always places the members in reverse order, and libc++ always places the members in the order given

假设这是真的,是否有 libstdc++ 使用倒序的原因(历史原因或其他原因)?

额外奖励:这两个实现是否曾因任何原因更改其 std::tuple 顺序?

最佳答案

参见 this answer为什么 libc++ 选择前向顺序。至于lib​​stdc++为什么选择逆序,大概是因为variadics template proposal中就是这么演示的,也是比较明显的实现方式。

奖励:没有。这些排序在两个库中都是稳定的。

更新

libc++ 选择前向存储顺序是因为:

  1. 它是可实现的。
  2. 该实现具有良好的编译时性能。
  3. 它为 libc++ 的客户提供了一些直观和可控的东西,如果他们关心存储的顺序,并且愿意在使用 libc++ 时依赖它,尽管它是未指定的。

简而言之,libc++ tuple 的实现者只是觉得按照客户端(隐式)指定的顺序存储对象是一件好事。

关于c++ - 为什么 libstdc++ 以相反的顺序存储 std::tuple 元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27663641/

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