有没有办法让这件事起作用呢?我希望您能理解,我正在尝试通过递归对的方式创建一个列表
#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;
}发布于 2011-02-08 19:20:04
不是的。boost::variant的要点是它有一个固定的大小,并且不进行动态分配。在这种情况下,它类似于一个联盟。递归的boost::variant必须有无限的大小才能包含它可能的最大值--这显然是不可能的。
但是,您可以通过指针传递它来完成此操作。例如:
struct nil { };
typedef boost::make_recursive_variant<nil,
std::pair<int, boost::scoped_ptr<boost::recursive_variant_> > >
variant_list_int;https://stackoverflow.com/questions/4932208
复制相似问题