boost::make_recursive_variant测试程序
boost::variant是一个支持多态类型的库,采用模板元编程技术实现。而使用make_recursive_variant可以构建递归的boost::variant。
在这篇文章中,我们将会编写一些相关的测试程序以了解make_recursive_variant的使用方法和特性。
为了开始测试,我们首先需要安装Boost库。接下来,我们将会编写一个简单的程序来测试make_recursive_variant的使用。
首先,我们需要包含以下的头文件:
#include
#include
#include <boost/variant.hpp>
using namespace std;
接下来,我们需要定义一个递归类型并使用make_recursive_variant来构造一个boost::variant类型:
struct node;
typedef boost::variant<int, string, boost::recursive_wrapper> var;
struct node{
var left;
var right;
};
如上所示,我们定义了一个递归节点(node)类型,并使用boost::recursive_wrapper来封装它。这样做是为了让递归节点自引用时不会出错。
接下来,我们可以编写一个函数来输出递归节点:
void print_node(const var& v){
if(const int* i = boost::get(&v))
cout << i << endl;
else if(const string s &