2

我想用 C++ 写一个类型定义,但不知道我想实现的东西是否合法。假设我想做一个 boost 变体类型向量的 typedef,它指向一个 int 或另一个相同类型的向量。那么,这是否合法,编译器会抱怨吗?

typedef std::vector<boost::variant<int *, boost::variant<int *, IntBranch*>> IntBranch;
4

1 回答 1

4

您可以boost::make_recursive_variant为此目的使用:

#include <boost/variant.hpp>

typedef boost::make_recursive_variant<
   int*, 
   std::vector< boost::recursive_variant_ >
>::type IntBranch;

这就是你将如何使用它:

#include <vector>

int main()
{
    typedef boost::make_recursive_variant<
       int*, 
       std::vector< boost::recursive_variant_ >
    >::type IntBranch;

    int x = 42;
    IntBranch ib = &x;

    std::vector<IntBranch> v;
    v.push_back(ib);

    IntBranch ib2 = v;

    // ...
}

这是一个活生生的例子

于 2013-04-07T00:16:40.077 回答