联合似乎可以在c++11中模板化,例如在std的参考实现::可选中使用。
这在c++11之前有可能吗?
发布于 2013-12-23 12:33:01
是的,这似乎一直是被允许的。联合是类,模板要么是函数,要么是类模板。
标准的有关部分:
union定义的类。(因此,人们可能会认为,新类型的特征std::is_class有点用词不当;这些特征应该用来划分类型的空间,因此is_union是一个单独的、相互排斥的特征。)
发布于 2013-12-23 12:34:35
是的,一个特别有用的应用程序是将一个类型同时表示为一个字节数组:
template <typename T>
union test
{
unsigned char ch[sizeof(T)];
T variable;
};发布于 2019-11-29 23:22:16
代替联合,还可以使用std::variant作为c++17 https://en.cppreference.com/w/cpp/utility/variant
https://stackoverflow.com/questions/20743582
复制相似问题