正如 Tony The Tiger 所建议的那样,您可以使用tuple。它包含在 C++11 标准中,并且新的编译器已经支持它。它也在boost中实现。对于我的 ibm xlC 编译器元组在 std::tr1 命名空间中(在 MSVC10 中尝试过——它在 std 命名空间中)。
#include <cstdio>
#include <tuple>
// for MSVC
using namespace std;
// for xlC
//using namespace std::tr1;
// for boost
// using namespace boost;
typedef tuple<int, float, char> MyTuple;
MyTuple f() {
return MyTuple(1, 2.0f, '3');
}
int main() {
MyTuple t = f();
printf("%i, %f, %c\n", get<0>(t), get<1>(t), get<2>(t));
}
TR1的xlC编译:
xlC -D__IBMCPP_TR1__ file.cpp
用于增强的 xlC 编译:
xlC file.cpp -I/path/to/boost/root