Документация по 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». Как я могу определить свои собственные лямбда-аргументы?
Задача ещё не решена.
Других решений пока нет …