LINUX.ORG.RU

boost::spirit, функции и функторы в качестве семантических экшенов.


0

2
qi::int_[func0] >> "," >> qi::int_[func0]

Если func0 - это void func0(int _argument);, то всё нормально. Если func0 - это объект-функтор, где определён void operator()(int _argument);, то всё плохо - компилятор ругается, что сигнатура плохая: хочет передать не один аргумент типа int, а три аргумента: (int&, const boost::spirit::unused_type&, bool&). С чего бы он вдруг это хочет?

http://www.boost.org/doc/libs/1_48_0/libs/spirit/doc/html/spirit/qi/tutorials/semantic_actions.html

...
    // A function object
    struct print_action
    {
        void operator()(int const& i, qi::unused_type, qi::unused_type) const
        {
            std::cout << i << std::endl;
        }
    };
...

Take note that with function objects, we need to have an operator() with 3 arguments. Since we don't care about the other two, we can use unused_type for these. We'll see more of unused_type elsewhere. unused_type is a Spirit supplied support class.

anonymous
()
Ответ на: комментарий от anonymous

Попробую таки почитать документацию :)

kiverattes ★☆
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.