Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Задание количества подстановочных аргументов, в boost::Spirit::Qi 
:(
    Опции темы
EnergoHokum
Дата 28.3.2012, 11:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 600
Регистрация: 10.11.2006
Где: Россия, Ставропол ь

Репутация: нет
Всего: 6



При попытке явно задать (define) переменную BOOST_PHOENIX_LIMIT, к примеру, равной 15-и, никакого эффекта не наблюдается, по прежнему в выхлопе ошибок error: '_10' is not a member of 'qi' и для следующих символов подстановки тоже. Хотя в документации сказано, что должно работать. Если кто сталкивался с подобной проблемой -- подскажите, куда копать. boost 1.48.0, GCC 4.4.0 (Qt MinGW).
PM MAIL ICQ   Вверх
borisbn
Дата 28.3.2012, 13:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 22
Всего: 135



Цитата(boost)

You can set BOOST_PHOENIX_ARG_LIMIT, the predefined maximum placeholder index. By default, BOOST_PHOENIX_ARG_LIMIT is set to BOOST_PHOENIX_LIMIT

ты должен выставить BOOST_PHOENIX_ARG_LIMIT, а не BOOST_PHOENIX_LIMIT


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
EnergoHokum
Дата 28.3.2012, 13:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 600
Регистрация: 10.11.2006
Где: Россия, Ставропол ь

Репутация: нет
Всего: 6



Никакой разницы в поведении. Быть может, нужен какой особый порядок include-ов? Сейчас всё выглядит таким образом:
Код

#include <tuple>
#include <vector>
#include <string>
#include <sstream>
#include <fstream>
#include <iostream>
#include <iterator>
#include <algorithm>
//--------------------------------------------------------------------------
#define BOOST_PHOENIX_ARG_LIMIT 15
// #define FUSION_MAX_VECTOR_SIZE  15
// #define BOOST_SPIRIT_USE_PHOENIX_V3
//--------------------------------------------------------------------------
#include <boost/variant.hpp>
#include <boost/shared_ptr.hpp>
#include <boost/spirit/include/qi.hpp>
#include <boost/spirit/include/phoenix.hpp>
#include <boost/fusion/include/at_c.hpp>
#include <boost/fusion/include/vector.hpp>
#include <boost/fusion/include/adapt_struct.hpp>
#include <boost/spirit/include/support_istream_iterator.hpp>
//--------------------------------------------------------------------------
//...


Добавлено через 56 секунд
Или я что-то недоinclude-ил?..
PM MAIL ICQ   Вверх
volatile
Дата 28.3.2012, 23:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 37
Всего: 85



Попробуйте задать не BOOST_PHOENIX_ARG_LIMIT, а PHOENIX_ARG_LIMIT
Код

# define PHOENIX_ARG_LIMIT 15

Раньше, по крайней мере было так. Возможно ваш случай...
PM MAIL   Вверх
EnergoHokum
Дата 29.3.2012, 06:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 600
Регистрация: 10.11.2006
Где: Россия, Ставропол ь

Репутация: нет
Всего: 6



Код

# define PHOENIX_ARG_LIMIT 15


Увы и ах. Никакой реакции.
PM MAIL ICQ   Вверх
EnergoHokum
Дата 30.3.2012, 07:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 600
Регистрация: 10.11.2006
Где: Россия, Ставропол ь

Репутация: нет
Всего: 6



Вот 'минимальный' пример того, что хотелось бы скомпилировать. Если количество элементов в кортеже не превышает девяти, то всё отлично собирается. Если же десять, и больше -- то всё, приплыли...
PM MAIL ICQ   Вверх
EnergoHokum
Дата 14.11.2012, 12:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 600
Регистрация: 10.11.2006
Где: Россия, Ставропол ь

Репутация: нет
Всего: 6



Нужно использовать следующие define-ы:
Код

#define PHOENIX_LIMIT                   20 /* Или сколько там надо их парсить... */
#define FUSION_MAX_VECTOR_SIZE          PHOENIX_LIMIT
#define BOOST_RESULT_OF_NUM_ARGS        PHOENIX_LIMIT

PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0472 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.