Hi, more details ;-) The error message is: .../grammar.hpp:51: error: No match for 'boost::spirit ::functor_parser< data_ver_parser<parse_actions> >::functor_parser(const parse_actions &)' /usr/include/boost/spirit/utility/functor_parser.hpp:34: candidates are: boost ::spirit::functor_parser< data_ver_parser<parse_actions> > ::functor_parser( const data_ver_parser< parse_actions> &) /usr/include/boost/spirit/utility/functor_parser.hpp:33: boost::spirit ::functor_parser< data_ver_parser<parse_actions> > ::functor_parser() /usr/include/boost/spirit/utility/functor_parser.hpp:30: boost::spirit ::functor_parser< data_ver_parser<parse_actions> > ::functor_parser( const boost::spirit::functor_parser< data_ver_parser<eda::data::detail ::parse_actions> > &) It seems, that the spirit functor parser can't get other template arguments expect its own/template type (copy ctor etc.) Well, more to the background: I want to write a tagging support for associating keywords to lines. To separate I have several functor parser which recognizes the keywords and should tag them. I have to store the tagged data somewhere - not in global space (not thread-safe). Is there a way? What could be one? Thanks, Olaf