boost::bind does not compile
I am new to boost spirit and I have the following problem:

    #include <string>
    #include <vector>
    #include <boost/spirit/include/qi.hpp>

    #include <boost/spirit/include/phoenix_operator.hpp>
    #include <boost/spirit/include/phoenix_function.hpp>
    #include <boost/spirit/include/phoenix_statement.hpp>

    #include <boost/bind.hpp>

    using namespace boost::spirit;
    using namespace std;

    struct MyGrammar
        : qi::grammar<string::const_iterator, string(), ascii::space_type> {
        MyGrammar();

        void myFun(const string& s);

        private:
        qi::rule<string::const_iterator, string(), ascii::space_type> myRule;
    };



    using namespace boost::spirit;
    using namespace std;

    MyGrammar::MyGrammar() : MyGrammar::base_type(myRule) {
        using qi::_1;

        myRule = int_ [boost::bind(&MyGrammar::myFun, this, _1)]; // fails
        myRule = int_ [_val = _1];  // fine
    }

    void MyGrammar::myFun(const string& s){
        cout << "read: " << s << endl;
    }

    int
    main(){
    }

With the first assignment of `myRule` I get compile errors while the second assignment compiles fine.

In the first case the compiler outputs huge error messages that I don't understand.
At the end it says:

    boost_1_49_0/include/boost/bind/bind.hpp:318:9: error: no match for call to '(const boost::_mfi::mf1<void, MyGrammar, const std::basic_string<char>&>) (MyGrammar* const&, const boost::phoenix::actor<boost::spirit::argument<0> >&)'
    boost_1_49_0/include/boost/bind/mem_fn_template.hpp:163:7: note: candidates are: R boost::_mfi::mf1<R, T, A1>::operator()(T*, A1) const [with R = void, T = MyGrammar, A1 = const std::basic_string<char>&]
    boost_1_49_0/include/boost/bind/mem_fn_template.hpp:184:7: note:                 R boost::_mfi::mf1<R, T, A1>::operator()(T&, A1) const [with R = void, T = MyGrammar, A1 = const std::basic_string<char>&]


Any ideas?
Thanks a lot for any help!
boost::bind does not compile
===

I am new to boost spirit and I have the following problem:

    #include <string>
    #include <vector>
    #include <boost/spirit/include/qi.hpp>

    #include <boost/spirit/include/phoenix_operator.hpp>
    #include <boost/spirit/include/phoenix_function.hpp>
    #include <boost/spirit/include/phoenix_statement.hpp>

    #include <boost/bind.hpp>

    using namespace boost::spirit;
    using namespace std;

    struct MyGrammar
        : qi::grammar<string::const_iterator, string(), ascii::space_type> {
        MyGrammar();

        void myFun(const string& s);

        private:
        qi::rule<string::const_iterator, string(), ascii::space_type> myRule;
    };



    using namespace boost::spirit;
    using namespace std;

    MyGrammar::MyGrammar() : MyGrammar::base_type(myRule) {
        using qi::_1;

        myRule = int_ [boost::bind(&MyGrammar::myFun, this, _1)]; // fails
        myRule = int_ [_val = _1];  // fine
    }

    void MyGrammar::myFun(const string& s){
        cout << "read: " << s << endl;
    }

    int
    main(){
    }

With the first assignment of `myRule` I get compile errors while the second assignment compiles fine.

In the first case the compiler outputs huge error messages that I don't understand.
At the end it says:

    boost_1_49_0/include/boost/bind/bind.hpp:318:9: error: no match for call to '(const boost::_mfi::mf1<void, MyGrammar, const std::basic_string<char>&>) (MyGrammar* const&, const boost::phoenix::actor<boost::spirit::argument<0> >&)'
    boost_1_49_0/include/boost/bind/mem_fn_template.hpp:163:7: note: candidates are: R boost::_mfi::mf1<R, T, A1>::operator()(T*, A1) const [with R = void, T = MyGrammar, A1 = const std::basic_string<char>&]
    boost_1_49_0/include/boost/bind/mem_fn_template.hpp:184:7: note:                 R boost::_mfi::mf1<R, T, A1>::operator()(T&, A1) const [with R = void, T = MyGrammar, A1 = const std::basic_string<char>&]


Any ideas?
Thanks a lot for any help!