以下program :
#include <iostream>
#include <tuple>
struct A {
A() { std::cout << "A constructor\n"; }
};
struct B {
B() { std::cout << "B constructor\n"; }
};
int main() {
std::tuple<A, B> t;
}
在不同的编译器上给出不同的输出:
# libstdc++
B constructor
A constructor
# libc++
A constructor
B constructor
这看起来很奇怪...我认为标准会保证元组元素按顺序构造,例如 A、B、...、Y、Z?
最佳答案
std::tuple
构造顺序当前为 unspecified .
对其订单作出具体决定的提案已 submitted向委员会提交,但在此之前不应依赖该命令。
关于c++ - 元组没有按顺序构建?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32192809/