什么是C ++标准库中的boost :: variant?

时间:2012-03-22 22:00:36

标签: c++ boost unions variant boost-variant

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

union {
   int i;
   double d;
}

3 个答案:

答案 0 :(得分:24)

正如几位评论者所说:不,标准C ++中没有类似Boost Variant的东西。也许在未来几年会有,但为什么要等 - 今天就使用Boost Variant!


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

答案 1 :(得分:10)

几年过去了:现在a proposal已经开始了。可能boost::variant将进入C ++ 17!在此之前,我们必须与boost::variant一起生活,这仍然很棒。请注意,std::variant中的细节会有一些变化。

更新:提案成功了。 std::variant将成为新C ++ 17标准的一部分。这是June 2016 meeting report by Herb Sutter。他确认了这一点。

答案 2 :(得分:4)

std::variant现在正式成为C ++ 17标准库的一部分! manual page