os/ossrv/ossrv_pub/boost_apis/boost/bind/apply.hpp
author sl@SLION-WIN7.fritz.box
Fri, 15 Jun 2012 03:10:57 +0200
changeset 0 bde4ae8d615e
permissions -rw-r--r--
First public contribution.
     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