Я делаю парсер с spirit :: qi и стремлюсь сделать его совместимым с различными размерами символов.
template < typename Iterator >
struct grammar : qi::grammar < Iterator >
{
grammar () : grammar::base_type ( file, alter_string_size_to < Iterator::value_type > ( _szFile ) )
{
}
qi::rule < Iterator > file;
};
Учитывая, что
alter_string_size_to < Iterator::value_type > ( _szFile )
успешно возвращает указатель настрока, содержащая _szFile в нужном размере символа.
Когда я компилирую с
Iterator = std::wstring::const_iterator
, я получаю следующее сообщение об ошибке
cannot convert parameter 2 from 'unsigned short *' to 'const std::string &'
Итак .. grammar :: base_type isожидая только const std :: string & в качестве второго параметра.У меня вопрос, как я могу сказать qi :: grammar ожидать строку с размером значения Iterator value_type?
Заранее спасибо!