我正在寻找 C 风格联合的替代方案。boost::variant 就是这样一种选择。标准 C++ 中有什么东西吗?
union {
int i;
double d;
}
我正在寻找 C 风格联合的替代方案。boost::variant 就是这样一种选择。标准 C++ 中有什么东西吗?
union {
int i;
double d;
}
正如一些评论者所说:不,标准 C++ 中没有类似 Boost Variant 的。也许几年后会有,但为什么要等待——今天使用 Boost Variant!
编辑(四年后,2016 年):在 C++17 中将有std::variant
. 与 类似但不完全相同boost::variant
。所以当你的编译器支持 C++17 时,你就会在标准库中找到解决方案。
几年过去了:现在正在提出一项提案。可能boost::variant
会变成 C++17!在那之前,我们将不得不忍受boost::variant
它仍然很棒。请注意,中的细节会有一些变化std::variant
。
更新:提案成功了。std::variant
将成为新 C++17 标准的一部分。这是Herb Sutter 2016 年 6 月的会议报告。他在那里证实了这一点。
std::variant
现在正式成为 C++17 标准库的一部分!https://herbsutter.com/2016/06/30/trip-report-summer-iso-c-standards-meeting-oulu/