На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: Qraizer, Hsilgos
  
> boost.spirit: closures и actors
    есть примерно такой код

    ExpandedWrap disabled
      struct param_closure : boost::spirit::closure<param_closure, std::string, std::string > {
          member1 key;
          member2 value;
      };


    ExpandedWrap disabled
      line = ( comment | param[&param_action] );
      comment = ch_p('#') >> lexeme_d[ +(print_p) ][&comment_action] >> end_p;
      param   = param_name[ param.key = construct_<std::string>(arg1, arg2) ] >> ch_p('=') >> param_value[ param.value = construct_<std::string>(arg1, arg2) ] >> end_p;


    как мне в param_action передать оба челна замыкания?
    воспронимается только такая сигнатура почему-то
    ExpandedWrap disabled
      void param_action(const std::string& key)


    все остальное приводит к ошибкам с требованием, либо слишком много аргументов, либо не могу конвертировать std::string во что-нибудь другое

    upd: вообще все правильно работает, member1 считается почему-то return value.

    upd2: понял, что извратил логику и поплатился за это
    Сообщение отредактировано: 0x2207 -
      решил проблему с помощью std::pair< std::string, std::string > и member_var_ptr,

      хороший пример приведен тут:

      http://article.gmane.org/gmane.comp.parsers.spirit.general/10273
      0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
      0 пользователей:


      Рейтинг@Mail.ru
      [ Script execution time: 0,0223 ]   [ 16 queries used ]   [ Generated: 27.04.24, 17:47 GMT ]