Re: The boost.variant library and boost::make_recursive_variant
On 5 Jul, 02:49, Miros aw Makowiecki <miroslaw.makowie...@gmail.com>
wrote:
We have this code:
typedef boost::make_recursive_variant<
int
, std::vector< boost::recursive_variant_ >
>::type int_tree_t;
Use of the resultant variant type is as expected:
std::vector< int_tree_t > subresult;
subresult.push_back(3);
subresult.push_back(5);
std::vector< int_tree_t > result;
result.push_back(1);
result.push_back(subresult);
result.push_back(7);
int_tree_t var(result);
According to documentation in library of boost.variant, a variable var
it's ( 1 ( 3 5 ) 7 ).
Queastion:Who do it print in language C++ by next of std::cout?
Thanks in advance.
On 5 Jul, 02:49, Miros aw Makowiecki <miroslaw.makowie...@gmail.com>
wrote:
We have this code:
typedef boost::make_recursive_variant<
int
, std::vector< boost::recursive_variant_ >
>::type int_tree_t;
Use of the resultant variant type is as expected:
std::vector< int_tree_t > subresult;
subresult.push_back(3);
subresult.push_back(5);
std::vector< int_tree_t > result;
result.push_back(1);
result.push_back(subresult);
result.push_back(7);
int_tree_t var(result);
According to documentation in library of boost.variant, a variable var
it's ( 1 ( 3 5 ) 7 ).
Queastion:Who do it print in language C++ by next of std::cout?
Thanks in advance.
(I suppose the question is HOW to print var to get ( 1 ( 3 5 ) 7 ) )
you provide visitor with function operator overloaded for all
the types your variant can hold.
struct print_visitor : public boost::static_visitor<void>
{
// print int
void operator()(int i) const
{
std::cout << i << ' ';
}
// print vector of int_tree_t
void operator()(std::vector<int_tree_t> const & v) const
{
std::cout << " ( ";
for(std::size_t i=0; i<v.size(); ++i )
boost::apply_visitor(print_visitor(), v[i]);
std::cout << " ) ";
}
};
boost::apply_visitor(print_visitor(), var);
regards
DS