Описание тега boost-phoenix
Boost.Phoenix - это библиотека C++, позволяющая программировать функции на C++.
2
ответа
Проблемы с адаптацией функций-членов в Фениксе
Я использую BOOST_PHOENIX_ADAPT_FUNCTION все время в духе. Я хотел бы иметь возможность адаптировать функции-члены по той же причине. Тем не менее, я получаю ошибки компиляции, если я делаю что-то вроде этого: struct A { int foo(int i) { return 5*i;…
10 сен '14 в 16:19
1
ответ
Ошибка оператора [] с пользовательским аргументом Boost C++ Phoenix
С существующим аргументом Boost Phoenix (заполнитель), таким как _1Я могу использовать оператор массива / индекс. Например, следующий отрывок будет отображать 1, int arr[4] = {1,2,3,4}; std::cout << _1[0](arr) << std::endl; Однако, если …
13 мар '13 в 22:39
1
ответ
Ошибка при форсировании Phoenix::bind compiling
Я использую phoenix:: bind и получаю это сообщение об ошибке: ошибка C2039: "связать": не является членом "Феникс" Строка кода, где я использую bind и куда указывает ошибка: phoenix:: bind (& OptionalInputPort:: eraseDataEditor) (phoenix:: var (* не…
14 авг '09 в 17:26
1
ответ
Используйте boost phoenix lambda с io_service
Я использую boost io_service для асинхронного запуска методов: void my_class::completion_handler() { ... } m_io_service.post(boost::bind(&my_class::completion_handler, this)); Я хотел бы использовать лямбда-выражение вместо boost::bind (см. Ниже…
28 дек '17 в 10:18
1
ответ
Вопросы повышения духа и повышения Феникса
один. Можно ли определить, что локальная переменная спиртового правила будет построена по умолчанию с использованием параметра, переданного в правило? У меня есть объекты AST Builder, которые имеют циклическую зависимость, я хотел бы инициализироват…
06 мар '11 в 15:55
2
ответа
boost::transform(), только если добавляемое значение не равно NULL?
У меня есть следующий код: // For each trigger model (_1) (which is just a CString), do: // m_triggers.push_back(triggers.GetTrigger(static_cast<char const*>(_1))) boost::transform( model.Triggers(), std::back_inserter(m_triggers), phx::bind(&…
31 мар '14 в 19:26
1
ответ
Статические функции из boost.lambda или boost.phoenix
Я регулярно использую boost.lambda (и phoenix) для определения лямбда-функций в C++. Мне очень нравится их полиморфное свойство, простота их представления и то, как они делают функциональное программирование на C++ намного проще. В некоторых случаях…
13 апр '12 в 16:46
1
ответ
Реализующий оператор деления
Я пишу простой калькулятор, используя повышение духа. Я хочу, чтобы оператор деления генерировал исключение, если встречается нулевой знаменатель. Я думаю в соответствии с term = factor [qi::_val = qi::_1] >> *(('*' >> factor [qi::_val *…
12 июн '14 в 10:09
0
ответов
Может Boost Proto адаптировать структуры к API типа метода получения
Это похоже на общую проблему. У меня есть два массивных набора кода, которые необходимо склеить: один использует простые структуры для хранения данных, а другой имеет API, которые предоставляют только методы получения / установки. Можно ли использов…
13 июл '16 в 19:39
1
ответ
Оператор функции-члена Boost Phoenix не может скомпилироваться, если функция перегружена
Я хочу использовать оператор функции-члена Boost Phoenix для функции класса, которая имеет перегрузки, как здесь. Следующий пример завершается ошибкой: #include <boost/phoenix/phoenix.hpp> #include <boost/phoenix/operator.hpp> using name…
28 фев '19 в 13:08
1
ответ
Назначение boost::phoenix не скомпилируется
У меня есть boost::spirit парсер, который должен просто назначить указатель на свой атрибут: rule<CompoundExpression *(Scope &)> var_ref = var<CompoundExpression>()(_r1) [ _val = new_<Reference<Variable<CompoundExpression>…
01 мар '19 в 20:49
1
ответ
Использование лямбда-выражений или внешних функций в качестве семантических действий spirit.qi
Я играю с созданием парсинга на основе Boost.Spirit.Qi. Имея пример как calc_utree, я пытаюсь расширить то, что использовать в качестве семантического действия. Например, тривиально использовать тот же подход с одиночным присваиванием в качестве сем…
16 апр '18 в 14:33
1
ответ
Как использовать диапазон на основе for_each в Boost.Phoenix?
Давайте рассмотрим следующий код: #include <boost/phoenix.hpp> #include <algorithm> #include <iostream> #include <vector> int main() { std::vector<int> const small_ints {1, 2, 3, 4, 5}; std::vector<int> const big_…
17 сен '16 в 13:28
1
ответ
Можно ли сделать Феникс на несколько ступеней менее жадным в отношении бинарных операторов?
Я хотел иметь категорию класса, которая принимает (неоцененные) выражения Феникса через бинарный оператор. По сути, идея заключается в том, что класс обрабатывает выражения и, например, выводит выражение на экран. Проблема в том, что Phoenix перегру…
18 май '15 в 23:27
1
ответ
Активизировать актера-феникса как вызываемый фьюжн объект
Мне было интересно, возможно ли создать актеров, которых можно звать фениксом, и использовать их в последовательностях слияния. Учитывая следующий источник: struct FusionStruct { void Doit() const{std::cout << "Doit" << std::endl;} }; st…
06 окт '11 в 13:03
2
ответа
Феникс-функция семантического действия не компилируется
Я хочу разобрать строку и убедиться, что она в нижнем регистре. Это должно быть сделано на этом этапе, потому что дух строит дерево из всего этого. так что у меня есть это правило struct to_lower_object { typedef char result_type; char operator()(ch…
05 ноя '11 в 15:34
1
ответ
Простой способ получить доступ к надстройке:: кортеж с Фениксом
Я хотел бы получить доступ к элементу boost::tuple с помощью Phoenix(C++98) #include <boost/tuple/tuple.hpp> #include <boost/phoenix.hpp> #include <algorithm> #include <vector> int main() { using namespace boost::phoenix::pla…
15 апр '15 в 00:27
1
ответ
Невозможно феникс:: связать ци::_val с повышением 1,53 (регресс?)
Приведенный ниже код, использующий boost::spirit, используется для работы с boost 1.44 и boost 1.49: qi::string("a_token") [ boost::phoenix::bind(&node_t::some_func, *qi::_val, true) ] Я обновил boost до версии 1.53, но теперь этот код больше не…
05 мар '13 в 20:34
1
ответ
Как передать функцию в параметре с Boost::Phoenix?
Это мой первый пост здесь, так что будьте добры, если я не уважаю "обычаи и традиции":) Я новичок в использовании Boost::Phoenix и хочу передать функцию в методы, определенные как: template <typename Selector> Result Greedy ( const t_Capacity&…
13 окт '11 в 19:36
1
ответ
Конструкция boost::phoenix try_ catch_all не компилируется
Я пишу грамматику boost::spirit::qi для разбора даты. #include <boost/spirit/include/qi.hpp> #include <boost/spirit/include/phoenix.hpp> #include <boost/date_time.hpp> template < typename InputIterator > struct date_rfc1123_g…
27 авг '15 в 09:13