Пользовательские аргументы в Boost Phoenix

Документация по Boost Phoenix Вот указывает, что я могу создавать свои собственные (лямбда) аргументы вместо _1/arg1, _2,arg2 и т.д. Итак, начиная с кода, подобного этому:

#include <iostream>
#include <boost/phoenix.hpp>

int main(int argc, char *argv[]) {
std::cout << (boost::phoenix::arg_names::_1)(17) << std::endl;
return 0;
}

…какие выводы 17Я стремлюсь к первому шагу использования myarg1, Документация рекомендует, чтобы я сначала #include <boost/spirit/home/phoenix/core/argument.hpp>, Однако выполнение этого (G ++ 4.7.2) приводит к ряду ошибок компиляции, начинающихся с: ошибка: переопределение «struct boost :: phoenix :: detail :: error_expecting_arguments».

Без файл arguments.hpp включен, я заметил, что я могу объявить переменные типа boost::phoenix::argument<0>, Когда я пытаюсь объявить переменную решающего типа, boost::phoenix::actor< boost::phoenix::argument<0> >однако я снова получаю многочисленные ошибки; на этот раз начиная с: ошибка: нет типа с именем «proto_base_expr». Как я могу определить свои собственные лямбда-аргументы?

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]