我想用 C++ 写一个类型定义,但不知道我想实现的东西是否合法。假设我想做一个 boost 变体类型向量的 typedef,它指向一个 int 或另一个相同类型的向量。那么,这是否合法,编译器会抱怨吗?
typedef std::vector<boost::variant<int *, boost::variant<int *, IntBranch*>> IntBranch;
您可以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;
// ...
}
这是一个活生生的例子。