ossrv_pub/boost_apis/boost/bind/apply.hpp
changeset 0 e4d67989cc36
equal deleted inserted replaced
-1:000000000000 0:e4d67989cc36
       
     1 #ifndef BOOST_BIND_APPLY_HPP_INCLUDED
       
     2 #define BOOST_BIND_APPLY_HPP_INCLUDED
       
     3 
       
     4 //
       
     5 //  apply.hpp
       
     6 //
       
     7 //  Copyright (c) 2002, 2003 Peter Dimov and Multi Media Ltd.
       
     8 //
       
     9 // Distributed under the Boost Software License, Version 1.0. (See
       
    10 // accompanying file LICENSE_1_0.txt or copy at
       
    11 // http://www.boost.org/LICENSE_1_0.txt)
       
    12 //
       
    13 
       
    14 namespace boost
       
    15 {
       
    16 
       
    17 template<class R> struct apply
       
    18 {
       
    19     typedef R result_type;
       
    20 
       
    21     template<class F> result_type operator()(F & f) const
       
    22     {
       
    23         return f();
       
    24     }
       
    25 
       
    26     template<class F, class A1> result_type operator()(F & f, A1 & a1) const
       
    27     {
       
    28         return f(a1);
       
    29     }
       
    30 
       
    31     template<class F, class A1, class A2> result_type operator()(F & f, A1 & a1, A2 & a2) const
       
    32     {
       
    33         return f(a1, a2);
       
    34     }
       
    35 
       
    36     template<class F, class A1, class A2, class A3> result_type operator()(F & f, A1 & a1, A2 & a2, A3 & a3) const
       
    37     {
       
    38         return f(a1, a2, a3);
       
    39     }
       
    40 
       
    41     template<class F, class A1, class A2, class A3, class A4> result_type operator()(F & f, A1 & a1, A2 & a2, A3 & a3, A4 & a4) const
       
    42     {
       
    43         return f(a1, a2, a3, a4);
       
    44     }
       
    45 
       
    46     template<class F, class A1, class A2, class A3, class A4, class A5> result_type operator()(F & f, A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5) const
       
    47     {
       
    48         return f(a1, a2, a3, a4, a5);
       
    49     }
       
    50 
       
    51     template<class F, class A1, class A2, class A3, class A4, class A5, class A6> result_type operator()(F & f, A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5, A6 & a6) const
       
    52     {
       
    53         return f(a1, a2, a3, a4, a5, a6);
       
    54     }
       
    55 
       
    56     template<class F, class A1, class A2, class A3, class A4, class A5, class A6, class A7> result_type operator()(F & f, A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5, A6 & a6, A7 & a7) const
       
    57     {
       
    58         return f(a1, a2, a3, a4, a5, a6, a7);
       
    59     }
       
    60 
       
    61     template<class F, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8> result_type operator()(F & f, A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5, A6 & a6, A7 & a7, A8 & a8) const
       
    62     {
       
    63         return f(a1, a2, a3, a4, a5, a6, a7, a8);
       
    64     }
       
    65 
       
    66     template<class F, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9> result_type operator()(F & f, A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5, A6 & a6, A7 & a7, A8 & a8, A9 & a9) const
       
    67     {
       
    68         return f(a1, a2, a3, a4, a5, a6, a7, a8, a9);
       
    69     }
       
    70 };
       
    71 
       
    72 } // namespace boost
       
    73 
       
    74 #endif // #ifndef BOOST_BIND_APPLY_HPP_INCLUDED