[spirit::karma | variant] Nested Variants

() > {
I am trying to use spirit::karma to generate a CSV file. I want to output a vector of variants. Unfortunately, I also want to add one more type to the variant; a string. So I was thinking I could nest variants. I can get this code to compile, but only the strings print out. What am I doing wrong? template< typename Iterator > class Generator : public boost::spirit::karma::grammar< Iterator, std::vector< boost::variant< std::string, boost::variant< bool, int public: Generator() : Generator::base_type(start) { using boost::spirit::karma::string; using boost::spirit::karma::bool_; using boost::spirit::karma::int_; using boost::spirit::karma::eol; start = (string | bool_ | int_) % Separator() << eol; } boost::spirit::karma::rule< Iterator, Csv_generator_input() > start; }; int main(int argc, char** argv) { std::vector< boost::variant< std::string, boost::variant< bool, int > >
values;
values.push_back(std::string("Hello")); values.push_back(true); values.push_back(false); values.push_back(10); values.push_back(std::string("World")); std::string generated; std::back_insert_iterator< std::string > sink(generated); boost::spirit::karma::generate(sink, Generaator(), values); // generated == "Hello,World", Expected "Hello,true,false,10,World" return 0; } --- Aaron Wright
participants (1)
-
Aaron_Wright@selinc.com