C ++中的递归Typedef

时间:2013-04-07 00:09:59

标签: c++ boost vector variant

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

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

1 个答案:

答案 0 :(得分: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;

    // ...
}

这是一个live example