boost::bind 不能处理函数重载 (error: no matching function for call to ‘bind’)

最近任务多、工期紧,没有时间更新博客,就水一期吧。虽然是水,也不能太失水准,刚好最近工作中遇到一个 boost::bind 的问题,花费了半天时间来定位解决,就说说它吧。

问题背景

项目中使用了 boost 的 ios_service,任务都是 post 到对应线程去执行,这样可以避免复杂的多线程同步问题,有点类似早年间 COM 的单线程套间模型。不过这就需要将接口通过 bind 封装为函数对象传递给 ios_service,之前的代码都工作正常,但我新增了一个接口后,却怎么也编译不过,报下面的错误 (超长内容,展开慎重):

查看代码

jni/../../Task/jni/../jni/../../xxxx/jni/../xxxx_xxxxxxxxx.cpp:3414:48: error: no matching function for call to 'bind'
        xxxxxxxxxxx::instance()->getIOS().post(boost::bind(&xxxxxxxxxxxxx::create_task,
                                               ^~~~~~~~~~~
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:1907:5: note: candidate template ignored: couldn't infer template argument 'R'
    BOOST_BIND(F f, A1 a1, A2 a2, A3 a3, A4 a4)
    ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:1868:20: note: expanded from macro 'BOOST_BIND'
#define BOOST_BIND bind
                   ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:1981:5: note: candidate template ignored: couldn't infer template argument 'R'
    BOOST_BIND(boost::type<r>, F f, A1 a1, A2 a2, A3 a3)
    ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:1868:20: note: expanded from macro 'BOOST_BIND'
#define BOOST_BIND bind
                   ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:2073:5: note: candidate template ignored: couldn't infer template argument 'F'
    BOOST_BIND(F f, A1 a1, A2 a2, A3 a3, A4 a4)
    ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:1868:20: note: expanded from macro 'BOOST_BIND'
#define BOOST_BIND bind
                   ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind_cc.hpp:57:5: note: candidate template ignored: couldn't infer template argument 'R'
    BOOST_BIND(BOOST_BIND_ST R (BOOST_BIND_CC *f) (B1, B2, B3, B4) BOOST_BIND_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4)
    ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:1868:20: note: expanded from macro 'BOOST_BIND'
#define BOOST_BIND bind
                   ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind_mf_cc.hpp:161:5: note: candidate template ignored: couldn't infer template argument
      'R'
    BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4)
    ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:1868:20: note: expanded from macro 'BOOST_BIND'
#define BOOST_BIND bind
                   ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind_mf_cc.hpp:172:5: note: candidate template ignored: couldn't infer template argument
      'R'
    BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4)
    ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:1868:20: note: expanded from macro 'BOOST_BIND'
#define BOOST_BIND bind
                   ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind_mf_cc.hpp:184:13: note: candidate template ignored: couldn't infer template argument
      'Rt2'
    >::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4)
            ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:1868:20: note: expanded from macro 'BOOST_BIND'
#define BOOST_BIND bind
                   ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind_mf_cc.hpp:196:13: note: candidate template ignored: couldn't infer template argument
      'Rt2'
    >::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4)
            ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:1868:20: note: expanded from macro 'BOOST_BIND'
#define BOOST_BIND bind
                   ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind_mf2_cc.hpp:68:5: note: candidate template ignored: could not match
      'R (T::*)(B1, B2)' against 'boost::shared_ptr<xxxxxxxxxxxxx>'
    BOOST_BIND(boost::type<rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2), A1 a1, A2 a2, A3 a3)
    ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:1868:20: note: expanded from macro 'BOOST_BIND'
#define BOOST_BIND bind
                   ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind_mf2_cc.hpp:79:5: note: candidate template ignored: could not match
      'R (T::*)(B1, B2) const' against 'boost::shared_ptr<xxxxxxxxxxxxx>'
    BOOST_BIND(boost::type<rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2) const, A1 a1, A2 a2, A3 a3)
    ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:1868:20: note: expanded from macro 'BOOST_BIND'
#define BOOST_BIND bind
                   ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:1875:5: note: candidate function template not viable: requires single argument
      'f', but 5 arguments were provided
    BOOST_BIND(F f)
    ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:1868:20: note: expanded from macro 'BOOST_BIND'
#define BOOST_BIND bind
                   ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:1883:5: note: candidate function template not viable: requires 2 arguments, but
      5 were provided
    BOOST_BIND(F f, A1 a1)
    ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:1868:20: note: expanded from macro 'BOOST_BIND'
#define BOOST_BIND bind
                   ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:1891:5: note: candidate function template not viable: requires 3 arguments, but
      5 were provided
    BOOST_BIND(F f, A1 a1, A2 a2)
    ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:1868:20: note: expanded from macro 'BOOST_BIND'
#define BOOST_BIND bind
                   ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:1899:5: note: candidate function template not viable: requires 4 arguments, but
      5 were provided
    BOOST_BIND(F f, A1 a1, A2 a2, A3 a3)
    ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:1868:20: note: expanded from macro 'BOOST_BIND'
#define BOOST_BIND bind
                   ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:1915:5: note: candidate function template not viable: requires 6 arguments, but
      5 were provided
    BOOST_BIND(F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5)
    ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:1868:20: note: expanded from macro 'BOOST_BIND'
#define BOOST_BIND bind
                   ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:1923:5: note: candidate function template not viable: requires 7 arguments, but
      5 were provided
    BOOST_BIND(F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6)
    ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:1868:20: note: expanded from macro 'BOOST_BIND'
#define BOOST_BIND bind
                   ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:1931:5: note: candidate function template not viable: requires 8 arguments, but
      5 were provided
    BOOST_BIND(F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7)
    ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:1868:20: note: expanded from macro 'BOOST_BIND'
#define BOOST_BIND bind
                   ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:1939:5: note: candidate function template not viable: requires 9 arguments, but
      5 were provided
    BOOST_BIND(F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8)
    ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:1868:20: note: expanded from macro 'BOOST_BIND'
#define BOOST_BIND bind
                   ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:1947:5: note: candidate function template not viable: requires 10 arguments, but
      5 were provided
    BOOST_BIND(F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9)
    ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:1868:20: note: expanded from macro 'BOOST_BIND'
#define BOOST_BIND bind
                   ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:1957:5: note: candidate function template not viable: requires 2 arguments, but
      5 were provided
    BOOST_BIND(boost::type<r>, F f)
    ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:1868:20: note: expanded from macro 'BOOST_BIND'
#define BOOST_BIND bind
                   ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:1965:5: note: candidate function template not viable: requires 3 arguments, but
      5 were provided
    BOOST_BIND(boost::type<r>, F f, A1 a1)
    ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:1868:20: note: expanded from macro 'BOOST_BIND'
#define BOOST_BIND bind
                   ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:1973:5: note: candidate function template not viable: requires 4 arguments, but
      5 were provided
    BOOST_BIND(boost::type<r>, F f, A1 a1, A2 a2)
    ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:1868:20: note: expanded from macro 'BOOST_BIND'
#define BOOST_BIND bind
                   ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:1989:5: note: candidate function template not viable: requires 6 arguments, but
      5 were provided
    BOOST_BIND(boost::type<r>, F f, A1 a1, A2 a2, A3 a3, A4 a4)
    ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:1868:20: note: expanded from macro 'BOOST_BIND'
#define BOOST_BIND bind
                   ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:1997:5: note: candidate function template not viable: requires 7 arguments, but
      5 were provided
    BOOST_BIND(boost::type<r>, F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5)
    ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:1868:20: note: expanded from macro 'BOOST_BIND'
#define BOOST_BIND bind
                   ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:2005:5: note: candidate function template not viable: requires 8 arguments, but
      5 were provided
    BOOST_BIND(boost::type<r>, F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6)
    ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:1868:20: note: expanded from macro 'BOOST_BIND'
#define BOOST_BIND bind
                   ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:2013:5: note: candidate function template not viable: requires 9 arguments, but
      5 were provided
    BOOST_BIND(boost::type<r>, F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7)
    ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:1868:20: note: expanded from macro 'BOOST_BIND'
#define BOOST_BIND bind
                   ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:2021:5: note: candidate function template not viable: requires 10 arguments, but
      5 were provided
    BOOST_BIND(boost::type<r>, F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8)
    ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:1868:20: note: expanded from macro 'BOOST_BIND'
#define BOOST_BIND bind
                   ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:2029:5: note: candidate function template not viable: requires 11 arguments, but
      5 were provided
    BOOST_BIND(boost::type<r>, F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9)
    ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:1868:20: note: expanded from macro 'BOOST_BIND'
#define BOOST_BIND bind
                   ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:2041:5: note: candidate function template not viable: requires single argument
      'f', but 5 arguments were provided
    BOOST_BIND(F f)
    ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:1868:20: note: expanded from macro 'BOOST_BIND'
#define BOOST_BIND bind
                   ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:2049:5: note: candidate function template not viable: requires 2 arguments, but
      5 were provided
    BOOST_BIND(F f, A1 a1)
    ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:1868:20: note: expanded from macro 'BOOST_BIND'
#define BOOST_BIND bind
                   ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:2057:5: note: candidate function template not viable: requires 3 arguments, but
      5 were provided
    BOOST_BIND(F f, A1 a1, A2 a2)
    ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:1868:20: note: expanded from macro 'BOOST_BIND'
#define BOOST_BIND bind
                   ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:2065:5: note: candidate function template not viable: requires 4 arguments, but
      5 were provided
    BOOST_BIND(F f, A1 a1, A2 a2, A3 a3)
    ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:1868:20: note: expanded from macro 'BOOST_BIND'
#define BOOST_BIND bind
                   ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:2081:5: note: candidate function template not viable: requires 6 arguments, but
      5 were provided
    BOOST_BIND(F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5)
    ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:1868:20: note: expanded from macro 'BOOST_BIND'
#define BOOST_BIND bind
                   ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:2089:5: note: candidate function template not viable: requires 7 arguments, but
      5 were provided
    BOOST_BIND(F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6)
    ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:1868:20: note: expanded from macro 'BOOST_BIND'
#define BOOST_BIND bind
                   ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:2097:5: note: candidate function template not viable: requires 8 arguments, but
      5 were provided
    BOOST_BIND(F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7)
    ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:1868:20: note: expanded from macro 'BOOST_BIND'
#define BOOST_BIND bind
                   ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:2105:5: note: candidate function template not viable: requires 9 arguments, but
      5 were provided
    BOOST_BIND(F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8)
    ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:1868:20: note: expanded from macro 'BOOST_BIND'
#define BOOST_BIND bind
                   ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:2113:5: note: candidate function template not viable: requires 10 arguments, but
      5 were provided
    BOOST_BIND(F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9)
    ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:1868:20: note: expanded from macro 'BOOST_BIND'
#define BOOST_BIND bind
                   ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind_cc.hpp:17:5: note: candidate function template not viable: requires single argument
      'f', but 5 arguments were provided
    BOOST_BIND(BOOST_BIND_ST R (BOOST_BIND_CC *f) () BOOST_BIND_NOEXCEPT)
    ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:1868:20: note: expanded from macro 'BOOST_BIND'
#define BOOST_BIND bind
                   ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind_cc.hpp:26:5: note: candidate function template not viable: requires 2 arguments, but
      5 were provided
    BOOST_BIND(BOOST_BIND_ST R (BOOST_BIND_CC *f) (B1) BOOST_BIND_NOEXCEPT, A1 a1)
    ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:1868:20: note: expanded from macro 'BOOST_BIND'
#define BOOST_BIND bind
                   ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind_cc.hpp:35:5: note: candidate function template not viable: requires 3 arguments, but
      5 were provided
    BOOST_BIND(BOOST_BIND_ST R (BOOST_BIND_CC *f) (B1, B2) BOOST_BIND_NOEXCEPT, A1 a1, A2 a2)
    ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:1868:20: note: expanded from macro 'BOOST_BIND'
#define BOOST_BIND bind
                   ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind_cc.hpp:46:5: note: candidate function template not viable: requires 4 arguments, but
      5 were provided
    BOOST_BIND(BOOST_BIND_ST R (BOOST_BIND_CC *f) (B1, B2, B3) BOOST_BIND_NOEXCEPT, A1 a1, A2 a2, A3 a3)
    ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:1868:20: note: expanded from macro 'BOOST_BIND'
#define BOOST_BIND bind
                   ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind_cc.hpp:68:5: note: candidate function template not viable: requires 6 arguments, but
      5 were provided
    BOOST_BIND(BOOST_BIND_ST R (BOOST_BIND_CC *f) (B1, B2, B3, B4, B5) BOOST_BIND_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5)
    ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:1868:20: note: expanded from macro 'BOOST_BIND'
#define BOOST_BIND bind
                   ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind_cc.hpp:79:5: note: candidate function template not viable: requires 7 arguments, but
      5 were provided
    BOOST_BIND(BOOST_BIND_ST R (BOOST_BIND_CC *f) (B1, B2, B3, B4, B5, B6) BOOST_BIND_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6)
    ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:1868:20: note: expanded from macro 'BOOST_BIND'
#define BOOST_BIND bind
                   ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind_cc.hpp:90:5: note: candidate function template not viable: requires 8 arguments, but
      5 were provided
    BOOST_BIND(BOOST_BIND_ST R (BOOST_BIND_CC *f) (B1, B2, B3, B4, B5, B6, B7) BOOST_BIND_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7)
    ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:1868:20: note: expanded from macro 'BOOST_BIND'
#define BOOST_BIND bind
                   ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind_cc.hpp:101:5: note: candidate function template not viable: requires 9 arguments,
      but 5 were provided
    BOOST_BIND(BOOST_BIND_ST R (BOOST_BIND_CC *f) (B1, B2, B3, B4, B5, B6, B7, B8) BOOST_BIND_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, ...

    ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:1868:20: note: expanded from macro 'BOOST_BIND'
#define BOOST_BIND bind
                   ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind_cc.hpp:112:5: note: candidate function template not viable: requires 10 arguments,
      but 5 were provided
    BOOST_BIND(BOOST_BIND_ST R (BOOST_BIND_CC *f) (B1, B2, B3, B4, B5, B6, B7, B8, B9) BOOST_BIND_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 ...

    ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:1868:20: note: expanded from macro 'BOOST_BIND'
#define BOOST_BIND bind
                   ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind_mf_cc.hpp:20:5: note: candidate function template not viable: requires 2 arguments,
      but 5 were provided
    BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) () BOOST_BIND_MF_NOEXCEPT, A1 a1)
    ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:1868:20: note: expanded from macro 'BOOST_BIND'
#define BOOST_BIND bind
                   ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind_mf_cc.hpp:30:5: note: candidate function template not viable: requires 2 arguments,
      but 5 were provided
    BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) () const BOOST_BIND_MF_NOEXCEPT, A1 a1)
    ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:1868:20: note: expanded from macro 'BOOST_BIND'
#define BOOST_BIND bind
                   ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind_mf_cc.hpp:41:13: note: candidate function template not viable: requires 2 arguments,
      but 5 were provided
    >::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) () BOOST_BIND_MF_NOEXCEPT, A1 a1)
            ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:1868:20: note: expanded from macro 'BOOST_BIND'
#define BOOST_BIND bind
                   ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind_mf_cc.hpp:52:13: note: candidate function template not viable: requires 2 arguments,
      but 5 were provided
    >::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) () const BOOST_BIND_MF_NOEXCEPT, A1 a1)
            ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:1868:20: note: expanded from macro 'BOOST_BIND'
#define BOOST_BIND bind
                   ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind_mf_cc.hpp:65:5: note: candidate function template not viable: requires 3 arguments,
      but 5 were provided
    BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2)
    ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:1868:20: note: expanded from macro 'BOOST_BIND'
#define BOOST_BIND bind
                   ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind_mf_cc.hpp:76:5: note: candidate function template not viable: requires 3 arguments,
      but 5 were provided
    BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2)
    ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:1868:20: note: expanded from macro 'BOOST_BIND'
#define BOOST_BIND bind
                   ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind_mf_cc.hpp:88:13: note: candidate function template not viable: requires 3 arguments,
      but 5 were provided
    >::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2)
            ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:1868:20: note: expanded from macro 'BOOST_BIND'
#define BOOST_BIND bind
                   ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind_mf_cc.hpp:100:13: note: candidate function template not viable: requires 3
      arguments, but 5 were provided
    >::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2)
            ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:1868:20: note: expanded from macro 'BOOST_BIND'
#define BOOST_BIND bind
                   ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind_mf_cc.hpp:113:5: note: candidate function template not viable: requires 4 arguments,
      but 5 were provided
    BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3)
    ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:1868:20: note: expanded from macro 'BOOST_BIND'
#define BOOST_BIND bind
                   ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind_mf_cc.hpp:124:5: note: candidate function template not viable: requires 4 arguments,
      but 5 were provided
    BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3)
    ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:1868:20: note: expanded from macro 'BOOST_BIND'
#define BOOST_BIND bind
                   ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind_mf_cc.hpp:136:13: note: candidate function template not viable: requires 4
      arguments, but 5 were provided
    >::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3)
            ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:1868:20: note: expanded from macro 'BOOST_BIND'
#define BOOST_BIND bind
                   ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind_mf_cc.hpp:148:13: note: candidate function template not viable: requires 4
      arguments, but 5 were provided
    >::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3)
            ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:1868:20: note: expanded from macro 'BOOST_BIND'
#define BOOST_BIND bind
                   ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind_mf_cc.hpp:209:5: note: candidate function template not viable: requires 6 arguments,
      but 5 were provided
    BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5)
    ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:1868:20: note: expanded from macro 'BOOST_BIND'
#define BOOST_BIND bind
                   ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind_mf_cc.hpp:220:5: note: candidate function template not viable: requires 6 arguments,
      but 5 were provided
    BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5)
    ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:1868:20: note: expanded from macro 'BOOST_BIND'
#define BOOST_BIND bind
                   ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind_mf_cc.hpp:232:13: note: candidate function template not viable: requires 6
      arguments, but 5 were provided
    >::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5)
            ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:1868:20: note: expanded from macro 'BOOST_BIND'
#define BOOST_BIND bind
                   ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind_mf_cc.hpp:244:13: note: candidate function template not viable: requires 6
      arguments, but 5 were provided
    >::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5)
            ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:1868:20: note: expanded from macro 'BOOST_BIND'
#define BOOST_BIND bind
                   ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind_mf_cc.hpp:257:5: note: candidate function template not viable: requires 7 arguments,
      but 5 were provided
    BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6)
    ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:1868:20: note: expanded from macro 'BOOST_BIND'
#define BOOST_BIND bind
                   ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind_mf_cc.hpp:268:5: note: candidate function template not viable: requires 7 arguments,
      but 5 were provided
    BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6)
    ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:1868:20: note: expanded from macro 'BOOST_BIND'
#define BOOST_BIND bind
                   ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind_mf_cc.hpp:280:13: note: candidate function template not viable: requires 7
      arguments, but 5 were provided
    >::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6)
            ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:1868:20: note: expanded from macro 'BOOST_BIND'
#define BOOST_BIND bind
                   ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind_mf_cc.hpp:292:13: note: candidate function template not viable: requires 7
      arguments, but 5 were provided
    >::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6)
            ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:1868:20: note: expanded from macro 'BOOST_BIND'
#define BOOST_BIND bind
                   ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind_mf_cc.hpp:305:5: note: candidate function template not viable: requires 8 arguments,
      but 5 were provided
    BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7)
    ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:1868:20: note: expanded from macro 'BOOST_BIND'
#define BOOST_BIND bind
                   ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind_mf_cc.hpp:316:5: note: candidate function template not viable: requires 8 arguments,
      but 5 were provided
    BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7)
    ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:1868:20: note: expanded from macro 'BOOST_BIND'
#define BOOST_BIND bind
                   ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind_mf_cc.hpp:328:13: note: candidate function template not viable: requires 8
      arguments, but 5 were provided
    >::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7)
            ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:1868:20: note: expanded from macro 'BOOST_BIND'
#define BOOST_BIND bind
                   ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind_mf_cc.hpp:340:13: note: candidate function template not viable: requires 8
      arguments, but 5 were provided
    >::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7)
            ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:1868:20: note: expanded from macro 'BOOST_BIND'
#define BOOST_BIND bind
                   ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind_mf_cc.hpp:353:5: note: candidate function template not viable: requires 9 arguments,
      but 5 were provided
    BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8)
    ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:1868:20: note: expanded from macro 'BOOST_BIND'
#define BOOST_BIND bind
                   ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind_mf_cc.hpp:364:5: note: candidate function template not viable: requires 9 arguments,
      but 5 were provided
    BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 ...

    ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:1868:20: note: expanded from macro 'BOOST_BIND'
#define BOOST_BIND bind
                   ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind_mf_cc.hpp:376:13: note: candidate function template not viable: requires 9
      arguments, but 5 were provided
    >::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A...

            ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:1868:20: note: expanded from macro 'BOOST_BIND'
#define BOOST_BIND bind
                   ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind_mf_cc.hpp:388:13: note: candidate function template not viable: requires 9
      arguments, but 5 were provided
    >::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A...

            ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:1868:20: note: expanded from macro 'BOOST_BIND'
#define BOOST_BIND bind
                   ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind_mf_cc.hpp:401:5: note: candidate function template not viable: requires 10
      arguments, but 5 were provided
    BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7, B8) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7...

    ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:1868:20: note: expanded from macro 'BOOST_BIND'
#define BOOST_BIND bind
                   ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind_mf_cc.hpp:412:5: note: candidate function template not viable: requires 10
      arguments, but 5 were provided
    BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7, B8) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6...

    ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:1868:20: note: expanded from macro 'BOOST_BIND'
#define BOOST_BIND bind
                   ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind_mf_cc.hpp:424:13: note: candidate function template not viable: requires 10
      arguments, but 5 were provided
    >::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7, B8) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a...

            ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:1868:20: note: expanded from macro 'BOOST_BIND'
#define BOOST_BIND bind
                   ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind_mf_cc.hpp:436:13: note: candidate function template not viable: requires 10
      arguments, but 5 were provided
    >::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7, B8) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5...

            ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:1868:20: note: expanded from macro 'BOOST_BIND'
#define BOOST_BIND bind
                   ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind_mf2_cc.hpp:21:5: note: candidate function template not viable: requires 3 arguments,
      but 5 were provided
    BOOST_BIND(boost::type<rt2>, R (BOOST_BIND_MF_CC T::*f) (), A1 a1)
    ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:1868:20: note: expanded from macro 'BOOST_BIND'
#define BOOST_BIND bind
                   ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind_mf2_cc.hpp:31:5: note: candidate function template not viable: requires 3 arguments,
      but 5 were provided
    BOOST_BIND(boost::type<rt2>, R (BOOST_BIND_MF_CC T::*f) () const, A1 a1)
    ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:1868:20: note: expanded from macro 'BOOST_BIND'
#define BOOST_BIND bind
                   ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind_mf2_cc.hpp:44:5: note: candidate function template not viable: requires 4 arguments,
      but 5 were provided
    BOOST_BIND(boost::type<rt2>, R (BOOST_BIND_MF_CC T::*f) (B1), A1 a1, A2 a2)
    ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:1868:20: note: expanded from macro 'BOOST_BIND'
#define BOOST_BIND bind
                   ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind_mf2_cc.hpp:55:5: note: candidate function template not viable: requires 4 arguments,
      but 5 were provided
    BOOST_BIND(boost::type<rt2>, R (BOOST_BIND_MF_CC T::*f) (B1) const, A1 a1, A2 a2)
    ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:1868:20: note: expanded from macro 'BOOST_BIND'
#define BOOST_BIND bind
                   ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind_mf2_cc.hpp:92:5: note: candidate function template not viable: requires 6 arguments,
      but 5 were provided
    BOOST_BIND(boost::type<rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3), A1 a1, A2 a2, A3 a3, A4 a4)
    ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:1868:20: note: expanded from macro 'BOOST_BIND'
#define BOOST_BIND bind
                   ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind_mf2_cc.hpp:103:5: note: candidate function template not viable: requires 6
      arguments, but 5 were provided
    BOOST_BIND(boost::type<rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3) const, A1 a1, A2 a2, A3 a3, A4 a4)
    ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:1868:20: note: expanded from macro 'BOOST_BIND'
#define BOOST_BIND bind
                   ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind_mf2_cc.hpp:116:5: note: candidate function template not viable: requires 7
      arguments, but 5 were provided
    BOOST_BIND(boost::type<rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5)
    ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:1868:20: note: expanded from macro 'BOOST_BIND'
#define BOOST_BIND bind
                   ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind_mf2_cc.hpp:127:5: note: candidate function template not viable: requires 7
      arguments, but 5 were provided
    BOOST_BIND(boost::type<rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4) const, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5)
    ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:1868:20: note: expanded from macro 'BOOST_BIND'
#define BOOST_BIND bind
                   ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind_mf2_cc.hpp:140:5: note: candidate function template not viable: requires 8
      arguments, but 5 were provided
    BOOST_BIND(boost::type<rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6)
    ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:1868:20: note: expanded from macro 'BOOST_BIND'
#define BOOST_BIND bind
                   ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind_mf2_cc.hpp:151:5: note: candidate function template not viable: requires 8
      arguments, but 5 were provided
    BOOST_BIND(boost::type<rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5) const, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6)
    ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:1868:20: note: expanded from macro 'BOOST_BIND'
#define BOOST_BIND bind
                   ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind_mf2_cc.hpp:164:5: note: candidate function template not viable: requires 9
      arguments, but 5 were provided
    BOOST_BIND(boost::type<rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7)
    ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:1868:20: note: expanded from macro 'BOOST_BIND'
#define BOOST_BIND bind
                   ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind_mf2_cc.hpp:175:5: note: candidate function template not viable: requires 9
      arguments, but 5 were provided
    BOOST_BIND(boost::type<rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6) const, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7)
    ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:1868:20: note: expanded from macro 'BOOST_BIND'
#define BOOST_BIND bind
                   ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind_mf2_cc.hpp:188:5: note: candidate function template not viable: requires 10
      arguments, but 5 were provided
    BOOST_BIND(boost::type<rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8)
    ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:1868:20: note: expanded from macro 'BOOST_BIND'
#define BOOST_BIND bind
                   ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind_mf2_cc.hpp:199:5: note: candidate function template not viable: requires 10
      arguments, but 5 were provided
    BOOST_BIND(boost::type<rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7) const, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8)
    ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:1868:20: note: expanded from macro 'BOOST_BIND'
#define BOOST_BIND bind
                   ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind_mf2_cc.hpp:212:5: note: candidate function template not viable: requires 11
      arguments, but 5 were provided
    BOOST_BIND(boost::type<rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7, B8), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 ...

    ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:1868:20: note: expanded from macro 'BOOST_BIND'
#define BOOST_BIND bind
                   ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind_mf2_cc.hpp:223:5: note: candidate function template not viable: requires 11
      arguments, but 5 were provided
    BOOST_BIND(boost::type<rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7, B8) const, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a...

    ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:1868:20: note: expanded from macro 'BOOST_BIND'
#define BOOST_BIND bind
                   ^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:2342:1: note: candidate function template not viable: requires 2 arguments, but
      5 were provided
BOOST_BIND( M T::*f, A1 a1 )
^
jni/../../Task/jni/../../../third-party/boost/include/boost/bind/bind.hpp:1868:20: note: expanded from macro 'BOOST_BIND'
#define BOOST_BIND bind
                   ^
1 error generated.</rt2></rt2></rt2></rt2></rt2></rt2></rt2></rt2></rt2></rt2></rt2></rt2></rt2></rt2></rt2></rt2></r></r></r></r></r></r></r></r></r></rt2></xxxxxxxxxxxxx></rt2></xxxxxxxxxxxxx></r>

错误看着挺唬人,其实关键的就是第一句:

jni/../../Task/jni/../jni/../../xxxx/jni/../xxxx_xxxxxxxxx.cpp:3414:48: error: no matching function for call to 'bind'
        xxxxxxxxxxx::instance()->getIOS().post(boost::bind(&xxxxxxxxxxxxx::create_task,
                                               ^~~~~~~~~~~

boost::bind create_task 这个接口时出错了,百度了下这个错误,网上比较多的说法是 bind 给的参数和接口声明不一致,可是仔细检查了三遍参数,都没有发现问题,甚至把 post 改成直接调用的形式,这个就可以通过编译,真是神了~

另外查资料的过程中,发现 bind 最多支持 9 个参数,超过就不行了。不过在我的场景里,只有 4 个参数,所以也不是这方面的问题,可以排除。

排查过程

为了简化问题的排查过程,排除其它因素干扰,我写了一个简单例子:

#include <iostream>
#include <functional>

using namespace std;

int create_task(int);
int create_task(int, int);

int main(int argc, char* argv[])
{
    auto f1 = bind(create_task, 1, 2);
    f1();
    return 0;
}

int create_task(int a)
{
    cout << "create_task (" << a << ") called" << endl;
    return 0;
}

int create_task(int a, int b)
{
    cout << "create_task (" << a << ", " << b << ") called" << endl;
    return 0;
}</functional></iostream>

这里使用了 std bind 而不是 boost bind,不过一样可以复现出错场景,同时避免引入 boost 静态库导致 demo 太过复杂:

$ make
g++ -Wall -g -c bindemo.cpp -o bindemo.o -std=c++11
bindemo.cpp: In function &#x2018;int main(int, char**)&#x2019;:
bindemo.cpp:11:37: error: no matching function for call to &#x2018;bind(<unresolved overloaded function type>, int, int)&#x2019;
     auto f1 = bind(create_task, 1, 2);
                                     ^
bindemo.cpp:11:37: note: candidates are:
In file included from bindemo.cpp:2:0:
/usr/include/c++/4.8.2/functional:1655:5: note: template<class _func, class ... _boundargs> typename std::_Bind_helper<std::__or_<std::is_integral<typename std::decay<_tp>::type>, std::is_enum<typename std::decay<_tp>::type> >::value, _Func, _BoundArgs ...>::type std::bind(_Func&&, _BoundArgs&& ...)
     bind(_Func&& __f, _BoundArgs&&... __args)
     ^
/usr/include/c++/4.8.2/functional:1655:5: note:   template argument deduction/substitution failed:
bindemo.cpp:11:37: note:   couldn't deduce template parameter &#x2018;_Func&#x2019;
     auto f1 = bind(create_task, 1, 2);
                                     ^
In file included from bindemo.cpp:2:0:
/usr/include/c++/4.8.2/functional:1682:5: note: template<class _result, class _func, ... _boundargs> typename std::_Bindres_helper<_result, _func, _boundargs>::type std::bind(_Func&&, _BoundArgs&& ...)
     bind(_Func&& __f, _BoundArgs&&... __args)
     ^
/usr/include/c++/4.8.2/functional:1682:5: note:   template argument deduction/substitution failed:
bindemo.cpp:11:37: note:   couldn't deduce template parameter &#x2018;_Result&#x2019;
     auto f1 = bind(create_task, 1, 2);
                                     ^
make: *** [bindemo.o] Error 1</_result,></class></typename></std::__or_<std::is_integral<typename></class></unresolved>

其实看了这个 demo,很多人都会怀疑一个问题——是不是重载的 create_task 出了问题呢?确实如此,其实我只要将另一个 create_task 的声明注释掉 (实现仍保留),这个 demo 就可以编译通过了,运行效果如下:

$ ./bindemo
create_task (1, 2) called

不过我在当初查这个问题的时候可是费了九牛二虎之力,因为参数使用了引用类型,一开始怀疑是引用的锅,直接使用指针,不行;然后怀疑是没有为引用参数添加 boost::ref,也不行;最后直接把 bind 接口改成另外一个成员函数 (start_task),无意中居然通过了。不过此时我仍怀疑是参数的问题,于是增加了一个同名的函数重载,参数照抄 create_task,结果就失败了;最神奇的是改为之前那版 start_task 也不行了,这才开始怀疑是函数重载的问题。

解决方案

知道了问题原因,改起来就比较顺了,因为新版的 create_task 增加了一个结构体作为参数,于是干脆将它重命名为 create_task_param,这样再绑定就没有问题了。

---------------------- 20220625 更新 --------------------

其实网上关于这个问题的讨论已经很多了,只是通过出错信息直接搜的话很难命中,后来通过搜索 “bind + 函数重载” 得到一些新的方案 (不能加 boost,bing 坑我),主要分两种:

  • 强制转换
  • 模板参数

其实不管哪种方式,都是在 bind 无法区分重载函数的场景下,告诉 bind 我们要绑定的是哪个重载版本,区别只是形式不同。废话不多说,直接上代码:

auto f1 = bind((int (*)(int, int))create_task, 1, 2);

这是强制转换的方式,如果事先定义函数类型会更具可读性:

typedef int (*create_task_func)(int, int);
auto f1 = bind((create_task_func)create_task, 1, 2);

其实上面的过程是为了推导 bind 模板参数的类型,所以也可以一步到位,直接指明:

auto f1 = bind<create_task_func>(create_task, 1, 2);</create_task_func>

个人感觉这种方式可读性最好,推荐。

最后吐槽一下 boost 的错误信息,一次输出太多外还没有说到重点,没什么经验的人绝对头大,如果像标准 c++ 一样有 “unresolved overloaded function type” 这样友好的提示,我想应该不会走这么多的弯路,感谢评论区 同学的明眼指正~

---------------------- 20220625 更新 --------------------

问题虽然解决了,但是 bind 为何对重载函数如此”无能为力”呢?按理说根据提供给 bind 的参数,再匹配重载函数的参数列表,应该可以挑选正确的重载版本。

不过换个角度思考,bind 支持占位符,上面的例子中,我可以这样写:

int main(int argc, char* argv[])
{
    auto f1 = bind(create_task, 1, 2);
    f1();
    auto f2 = bind(create_task, placeholders::_1, 0);
    f2(3);
    return 0;
}

其中 f2 有一个参数使用了占位符,这个参数将在调用时才传递,而 bind 需要在绑定那一刻知道使用的是哪个版本的 create_task,针对这个例子,他只有一个两参数的版本可选,但如果有多个两参数且第二参数为 int 类型的重载版本的话,bind 就迷糊了,毕竟他不知道后面用户会给占位符传递什么类型的参数不是?所以我猜测为了避免类似的问题,c++ 干脆不让 bind 支持重载函数,直接出错了事,编译期错误总比运行期错误好解决,你觉得呢?

当然,比较迷的是,这里只有一个两参数的版本,bind 仍然报错了,这是够懒的。另外有些网上的文章说 (附录 4),bind 会挑选重载函数中第一个声明的版本,如果通过就通过,如果不通过就报错。但是我实际测试的情况是,无论将两参数的版本放在前面还是后面,都报错,除非不声明,看起来我这个 gcc 版本是严格执行了 c++ 标准滴~

Original: https://www.cnblogs.com/goodcitizen/p/boost_bind_choke_on_function_overload.html
Author: goodcitizen
Title: boost::bind 不能处理函数重载 (error: no matching function for call to ‘bind’)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/577585/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 04-MySQL锁

    数据库锁 1、SQL语言包括那几个部分 SQL语言包括 数据定义(DDL)、数据操纵(DML)、数据控制(DCL)和数据查询(DQL)四个部分 2、每部分都有哪些操作关键词 数据定…

    Linux 2023年6月7日
    0149
  • [ Terminal ] 在 Windows Terminal 中使用 Git Bash

    https://www.cnblogs.com/yeungchie/ Git 自带的 git-bash 太简陋了,ConEmu 又太卡了,还是这个 Windows Terminal…

    Linux 2023年6月7日
    0116
  • Python subprocess的使用

    前言 部门内部存在大量代码使用Python去调用Shell或者JS脚本,因此重度依赖subprocess(使用Google的subprocess32),在使用subprocess的…

    Linux 2023年6月7日
    085
  • HTTP状态码1XX深入理解

    前段时间看了《御赐小仵作》,里面有很多细节很有心。看了一些评论都是:终于在剧里能够看到真正在搞事业、发了工资第一时间还钱的正常人了。我印象比较深的是王府才能吃上的葡萄。觉得非常合理…

    Linux 2023年6月13日
    0102
  • Linux 进程卡住了怎么办?

    在我们使用 Linux 系统时,如果网络或者磁盘等 I/O 出问题,会发现进程卡住了,即使用 kill -9 也无法杀掉进程,很多常用的调试工具,比如 strace, pstack…

    Linux 2023年5月27日
    088
  • php+apache环境搭建

    【先安装apache】 1、安装基础环境: yum -y install gcc libxml2 libxml2-devel sqlite-devel libcurl-devel….

    Linux 2023年6月6日
    084
  • opencv

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    Linux 2023年6月14日
    0113
  • Mysql安装

    linux系统,Mysql安装,用户登录、密码修改。 Mysql安装 环境 ubuntu 20.04 安装 安装服务 sudo apt install mysql-server 启…

    Linux 2023年6月13日
    089
  • Linux Centos7.5 vsftp 的安装与配置

    安装及配置 安装 sudo yum install vsftpd -y 服务管理 启动服务 service vsftpd start 关闭服务 service vsftpd sto…

    Linux 2023年6月14日
    084
  • 编写一个简单的linux kernel rootkit

    一、前言 linux kernel rootkit跟普通的应用层rootkit个人感觉不大,个人感觉区别在于一个运行在用户空间中,一个运行在内核空间中;另一个则是编写时调用的API…

    Linux 2023年6月8日
    0115
  • 高等代数: 2 行列式

    2 行列式 1、n个不同的自然数的一个全排列称为一个n元排列。 2、顺序、逆序、逆序数:τ(abcd…)(读音:tao)、奇排列、偶排列、对换(a,b) 3、定理1:对…

    Linux 2023年6月8日
    0152
  • 云笔记本:一个Laxcus应用软件

    给大家展示一个第三方开发的应用软件:云笔记本。 这个作品来自一位Laxcus分布式应用软件开发者,目前已经通过Laxcus集群操作系统的兼容性测试。云笔记本的界面和功能,类似Win…

    Linux 2023年6月6日
    0137
  • zabbix监控配置流程

    1.0 zabbix监控配置流程详细 管理角度: 开发 由开发人员提供监控指标来监控 运营 让其找开发要监控指标 运维 直接加 配置角度: 创建主机 创建主机组并加入主机 添加监控…

    Linux 2023年6月7日
    092
  • ASP.NET MVC实现POST方式的Redirect

    我们知道,在ASP.NET MVC中,要从一个Action跳转到另一个Action,通常是用一系列以”Redirect”开头的方法 Redirect Red…

    Linux 2023年6月13日
    0101
  • GFS-Google 文件系统

    GFS分布式文件系统 简介 GFS是一个可扩展的分布式文件系统,用于大型的、分布式的、对大量数据进行访问的应用。它运行于廉价的普通硬件上,并提供容错功能。它可以给大量的用户提供总体…

    Linux 2023年6月13日
    095
  • MSYS2使用记录——win10系统64位安装msys2最新版(msys2-x86_64-20190524.exe)

    MSYS2使用记录——win10系统64位安装msys2最新版(msys2-x86_64-20190524.exe) 安装 测试系统: windows 10 首先需要msys2的安…

    Linux 2023年6月13日
    0104
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球