我想在c ++中编写一个typedefinition,但不知道我想要实现的东西是否合法。假设我想做一个boost变量类型向量的typedef,它指向一个int或另一个相同类型的向量。那么,这是合法的吗?编译器会抱怨吗?
typedef std::vector<boost::variant<int *, boost::variant<int *, IntBranch*>> IntBranch;
答案 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。