c++ - boost bind 예제




바인드는 일반적으로 장면 뒤에서 어떻게 작동합니까? (2)

그런데 boost/bind/bind_template.hpp 를 포함하여 bind_t 가 축소되고 단순화되면 다음과 같이 이해하기가 더 쉬워집니다.

template<class R, class F, class L> 
class bind_t
{
    public:

        typedef bind_t this_type;

        bind_t(F f, L const & l): f_(f), l_(l) {}

        typedef typename result_traits<R, F>::type result_type;
        ...
        template<class A1> 
            result_type operator()(A1 & a1)
            {
                list1<A1 &> a(a1);
                return l_(type<result_type>(), f_, a, 0);
            }
    private:
        F f_;
        L l_;

};

부스트 소스 코드를 검토하는 데 오랜 시간을 들이지 않고도, 누군가가 boost bind가 구현 된 방법에 대한 간단한 요약을 줄 수 있습니까?


저는 이것이 당신이 바인드하고자하는 인자에 대한 멤버 변수를 선언하고 나머지 인자에 대해 오버로드 (overloads)하는 템플릿 클래스라고 생각합니다.





boost-bind