#include <boost/spirit/include/karma.hpp>
#include <iostream>
#include <vector>
namespace client
{
struct embedded_container
{
typedef std::vector<int>::const_iterator iterator;
typedef std::vector<int>::value_type type;
std::vector<int> data;
};
}
namespace boost { namespace spirit { namespace traits
{
template <>
struct is_container<client::embedded_container const>
: mpl::true_
{};
template <>
struct container_iterator<client::embedded_container const>
{
typedef client::embedded_container::iterator type;
};
template <>
struct begin_container<client::embedded_container const>
{
static client::embedded_container::iterator
call(client::embedded_container const& d)
{
return d.data.begin();
}
};
template <>
struct end_container<client::embedded_container const>
{
static client::embedded_container::iterator
call(client::embedded_container const& d)
{
return d.data.end();
}
};
}}}
namespace karma = boost::spirit::karma;
int main()
{
client::embedded_container d1; d1.data.push_back(1);
d1.data.push_back(2);
d1.data.push_back(3);
std::cout << karma::format(karma::int_ % ", ", d1) << std::endl; return 0;
}