13

我正在寻找 C 风格联合的替代方案。boost::variant 就是这样一种选择。标准 C++ 中有什么东西吗?

union {
   int i;
   double d;
}
4

3 回答 3

25

正如一些评论者所说:不,标准 C++ 中没有类似 Boost Variant 的。也许几年后会有,但为什么要等待——今天使用 Boost Variant!


编辑(四年后,2016 年):在 C++17 中将有std::variant. 与 类似但不完全相同boost::variant。所以当你的编译器支持 C++17 时,你就会在标准库中找到解决方案。

于 2012-03-22T23:12:56.270 回答
10

几年过去了:现在正在提出一项提案。可能boost::variant会变成 C++17!在那之前,我们将不得不忍受boost::variant它仍然很棒。请注意,中的细节会有一些变化std::variant

更新:提案成功了。std::variant将成为新 C++17 标准的一部分。这是Herb Sutter 2016 年 6 月的会议报告。他在那里证实了这一点。

于 2015-12-11T13:23:10.117 回答
4

std::variant现在正式成为 C++17 标准库的一部分!https://herbsutter.com/2016/06/30/trip-report-summer-iso-c-standards-meeting-oulu/

于 2016-07-07T05:59:26.997 回答