]> git.lyx.org Git - lyx.git/blob - boost/boost/bind/apply.hpp
update boost to pre-1.30.0
[lyx.git] / boost / boost / bind / apply.hpp
1 #ifndef BOOST_BIND_APPLY_HPP_INCLUDED
2 #define BOOST_BIND_APPLY_HPP_INCLUDED
3
4 //
5 //  apply.hpp
6 //
7 //  Copyright (c) 2002 Peter Dimov and Multi Media Ltd.
8 //
9 //  Permission to copy, use, modify, sell and distribute this software
10 //  is granted provided this copyright notice appears in all copies.
11 //  This software is provided "as is" without express or implied
12 //  warranty, and with no claim as to its suitability for any purpose.
13 //
14
15 namespace boost
16 {
17
18 template<class R> struct apply
19 {
20     typedef R result_type;
21
22     template<class F> result_type operator()(F f) const
23     {
24         return f();
25     }
26
27     template<class F, class A1> result_type operator()(F f, A1 & a1) const
28     {
29         return f(a1);
30     }
31
32     template<class F, class A1, class A2> result_type operator()(F f, A1 & a1, A2 & a2) const
33     {
34         return f(a1, a2);
35     }
36
37     template<class F, class A1, class A2, class A3> result_type operator()(F f, A1 & a1, A2 & a2, A3 & a3) const
38     {
39         return f(a1, a2, a3);
40     }
41
42     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
43     {
44         return f(a1, a2, a3, a4);
45     }
46
47     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
48     {
49         return f(a1, a2, a3, a4, a5);
50     }
51
52     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
53     {
54         return f(a1, a2, a3, a4, a5, a6);
55     }
56
57     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
58     {
59         return f(a1, a2, a3, a4, a5, a6, a7);
60     }
61
62     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
63     {
64         return f(a1, a2, a3, a4, a5, a6, a7, a8);
65     }
66
67     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
68     {
69         return f(a1, a2, a3, a4, a5, a6, a7, a8, a9);
70     }
71 };
72
73 } // namespace boost
74
75 #endif // #ifndef BOOST_BIND_APPLY_HPP_INCLUDED