Вот что говорит g++
[light@book calc]$ make
/usr/include/boost/spirit/core/scanner/scanner.hpp: In static member function ‘static void boost::spirit::attributed_action_policy<boost::spirit::nil_t>::call(const ActorT&, boost::spirit::nil_t, const IteratorT&, const IteratorT&) [with ActorT = void (Calc::*)(const char*, const char*), IteratorT = const char*]’:
...
calc.cpp:44: instantiated from here
/usr/include/boost/spirit/core/scanner/scanner.hpp:130: ошибка: must use ‘.*’ or ‘->*’ to call pointer-to-member function in ‘actor (...)’
make: *** [calc.o] Ошибка 1
Если юзать только стандартную библиотеку -- вместо указателей на методы &Calc::do_smthng нужно использовать что-то вроде std::bind1st(std::mem_fun(&Calc::do_smthng), this). Ну или, как сказали выше, буст.