我正在寻找C风格联盟的替代方案。 boost :: variant就是这样一个选择。 std C ++中有什么东西吗?
union {
int i;
double d;
}
答案 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