【发布时间】:2019-03-23 18:14:32
【问题描述】:
我正在尝试创建一个 variant 结构,即包含这么多类型之一的结构。到目前为止,这是我的尝试:
template <typename Type, typename... Rest> struct OneOf {
union {
Type value;
OneOf<Rest...> rest;
};
};
template <typename Type> struct OneOf {
Type value;
};
遗憾的是,这无法编译。当我尝试实例化它时,我得到:
one_of.h:34:33: 错误:用 1 个模板参数模板重新声明 结构 OneOf {
有没有办法用结构终止自引用递归?
【问题讨论】:
-
FWIW,您正在尝试制作一个变体。变体可以是一组类型中的一个。任何类型都是无限的。
标签: c++ c++11 variadic-templates template-meta-programming template-specialization