【发布时间】:2012-04-07 13:00:20
【问题描述】:
我正在寻找 C 风格联合的替代方案。 boost::variant 就是这样一种选择。标准 C++ 中有什么吗?
union {
int i;
double d;
}
【问题讨论】:
-
没有,但 Boost.Variant 极有可能在 TR2 中。
-
遗憾的是,大多数 boost 还没有
std等价物。 -
使用 Boost 没有错。 C++ 的全部意义在于它允许您编写做有用事情的库。它不会尝试提供开箱即用的一切,而是为您提供工具来制作您需要的一切。使用 Boost。
-
请注意
boost::variant是一个只有头文件的库,所以如果你只使用boost::variant,你不需要担心构建/链接Boost 库。只需确保 boost 头文件的路径包含在您的项目/IDE/makefile 中即可。 -
@EvanTeran - 不受限制的联合可能更容易实现变体类型,但它们不能替代它们。
标签: c++ boost unions variant boost-variant