根据 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++ 选择前向顺序。至于libstdc++为什么选择逆序,大概是因为variadics template proposal中就是这么演示的,也是比较明显的实现方式。
奖励:没有。这些排序在两个库中都是稳定的。
更新
libc++ 选择前向存储顺序是因为:
- 它是可实现的。
- 该实现具有良好的编译时性能。
- 它为 libc++ 的客户提供了一些直观和可控的东西,如果他们关心存储的顺序,并且愿意在使用 libc++ 时依赖它,尽管它是未指定的。
简而言之,libc++ tuple
的实现者只是觉得按照客户端(隐式)指定的顺序存储对象是一件好事。
关于c++ - 为什么 libstdc++ 以相反的顺序存储 std::tuple 元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27663641/