The following program:
#include <iostream>
#include <tuple>
struct A {
A() { std::cout << "A constructor
"; }
};
struct B {
B() { std::cout << "B constructor
"; }
};
int main() {
std::tuple<A, B> t;
}
gives different outputs on different compilers:
# libstdc++
B constructor
A constructor
# libc++
A constructor
B constructor
This seem weird... I figured the standard would have guaranteed the tuple elements be constructed in-order, e.g., A, B, ..., Y, Z?
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…