私は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は、2番目のパラメーターとしてconst std :: string&のみを期待しています。私の質問は、qi :: grammarにイテレータのvalue_typeサイズの文字列を期待するように指示するにはどうすればよいですか?
前もって感謝します !