#include #include int main() { typedef char const* Iterator; namespace qi = boost::spirit::qi; qi::rule >()> list; list = *qi::raw[qi::char_]; // This fails to compile char const* test = "abcdef"; int test_length = 6; char const* test_begin = test; char const* test_end = test + test_length; std::vector > result; bool r = qi::parse(test_begin, test_end, list, result); assert(r); assert(test_begin == test_end); assert(result.size() == test_length); for(int i = 0; i < test_length; ++i) { assert(result[i].begin() == test + i); assert(result[i].end() == test + i + 1); } }