#include #include using boost::base_from_member; namespace client { namespace detail { namespace karma = boost::spirit::karma; template struct string_grammar : karma::grammar { string_grammar() { } }; template struct header_grammar : karma::grammar { header_grammar( const string_grammar& strg ) : str( strg ) { } const string_grammar& str; }; } } using client::detail::string_grammar; using client::detail::header_grammar; typedef const char* output_iterator; struct header_fixture : private base_from_member >, public header_grammar { typedef base_from_member< string_grammar > string_grammar_base; header_fixture() : header_grammar( string_grammar_base::member ) {} }; int main() { header_fixture f; }