首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >boost::variant递归故障

boost::variant递归故障
EN

Stack Overflow用户
提问于 2011-02-08 19:00:46
回答 1查看 1.4K关注 0票数 5

有没有办法让这件事起作用呢?我希望您能理解,我正在尝试通过递归对的方式创建一个列表

代码语言:javascript
复制
#include <boost/variant.hpp>
#include <utility>

struct nil {};
typedef boost::make_recursive_variant<nil, std::pair<int, boost::recursive_variant_ >>::type list_t;

int main() {
  list_t list = { 1, (list_t){ 2, (list_t){ 3, nil() } } };
  return 0;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-02-08 19:20:04

不是的。boost::variant的要点是它有一个固定的大小,并且不进行动态分配。在这种情况下,它类似于一个联盟。递归的boost::variant必须有无限的大小才能包含它可能的最大值--这显然是不可能的。

但是,您可以通过指针传递它来完成此操作。例如:

代码语言:javascript
复制
struct nil { };

typedef boost::make_recursive_variant<nil, 
    std::pair<int, boost::scoped_ptr<boost::recursive_variant_> > >
        variant_list_int;
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4932208

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档