00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 typedef typename result_traits<R, F>::type result_type;
00016
00017 result_type operator()()
00018 {
00019 list0 a;
00020 BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
00021 }
00022
00023 result_type operator()() const
00024 {
00025 list0 a;
00026 BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
00027 }
00028
00029 template<class A1> result_type operator()(A1 & a1)
00030 {
00031 list1<A1 &> a(a1);
00032 BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
00033 }
00034
00035 template<class A1> result_type operator()(A1 & a1) const
00036 {
00037 list1<A1 &> a(a1);
00038 BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
00039 }
00040
00041 template<class A1, class A2> result_type operator()(A1 & a1, A2 & a2)
00042 {
00043 list2<A1 &, A2 &> a(a1, a2);
00044 BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
00045 }
00046
00047 template<class A1, class A2> result_type operator()(A1 & a1, A2 & a2) const
00048 {
00049 list2<A1 &, A2 &> a(a1, a2);
00050 BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
00051 }
00052
00053 template<class A1, class A2, class A3> result_type operator()(A1 & a1, A2 & a2, A3 & a3)
00054 {
00055 list3<A1 &, A2 &, A3 &> a(a1, a2, a3);
00056 BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
00057 }
00058
00059 template<class A1, class A2, class A3> result_type operator()(A1 & a1, A2 & a2, A3 & a3) const
00060 {
00061 list3<A1 &, A2 &, A3 &> a(a1, a2, a3);
00062 BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
00063 }
00064
00065 template<class A1, class A2, class A3, class A4> result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4)
00066 {
00067 list4<A1 &, A2 &, A3 &, A4 &> a(a1, a2, a3, a4);
00068 BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
00069 }
00070
00071 template<class A1, class A2, class A3, class A4> result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4) const
00072 {
00073 list4<A1 &, A2 &, A3 &, A4 &> a(a1, a2, a3, a4);
00074 BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
00075 }
00076
00077 template<class A1, class A2, class A3, class A4, class A5> result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5)
00078 {
00079 list5<A1 &, A2 &, A3 &, A4 &, A5 &> a(a1, a2, a3, a4, a5);
00080 BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
00081 }
00082
00083 template<class A1, class A2, class A3, class A4, class A5> result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5) const
00084 {
00085 list5<A1 &, A2 &, A3 &, A4 &, A5 &> a(a1, a2, a3, a4, a5);
00086 BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
00087 }
00088
00089 template<class A1, class A2, class A3, class A4, class A5, class A6> result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5, A6 & a6)
00090 {
00091 list6<A1 &, A2 &, A3 &, A4 &, A5 &, A6 &> a(a1, a2, a3, a4, a5, a6);
00092 BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
00093 }
00094
00095 template<class A1, class A2, class A3, class A4, class A5, class A6> result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5, A6 & a6) const
00096 {
00097 list6<A1 &, A2 &, A3 &, A4 &, A5 &, A6 &> a(a1, a2, a3, a4, a5, a6);
00098 BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
00099 }
00100
00101 template<class A1, class A2, class A3, class A4, class A5, class A6, class A7> result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5, A6 & a6, A7 & a7)
00102 {
00103 list7<A1 &, A2 &, A3 &, A4 &, A5 &, A6 &, A7 &> a(a1, a2, a3, a4, a5, a6, a7);
00104 BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
00105 }
00106
00107 template<class A1, class A2, class A3, class A4, class A5, class A6, class A7> result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5, A6 & a6, A7 & a7) const
00108 {
00109 list7<A1 &, A2 &, A3 &, A4 &, A5 &, A6 &, A7 &> a(a1, a2, a3, a4, a5, a6, a7);
00110 BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
00111 }
00112
00113 template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8> result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5, A6 & a6, A7 & a7, A8 & a8)
00114 {
00115 list8<A1 &, A2 &, A3 &, A4 &, A5 &, A6 &, A7 &, A8 &> a(a1, a2, a3, a4, a5, a6, a7, a8);
00116 BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
00117 }
00118
00119 template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8> result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5, A6 & a6, A7 & a7, A8 & a8) const
00120 {
00121 list8<A1 &, A2 &, A3 &, A4 &, A5 &, A6 &, A7 &, A8 &> a(a1, a2, a3, a4, a5, a6, a7, a8);
00122 BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
00123 }
00124
00125 template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9> result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5, A6 & a6, A7 & a7, A8 & a8, A9 & a9)
00126 {
00127 list9<A1 &, A2 &, A3 &, A4 &, A5 &, A6 &, A7 &, A8 &, A9 &> a(a1, a2, a3, a4, a5, a6, a7, a8, a9);
00128 BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
00129 }
00130
00131 template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9> result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5, A6 & a6, A7 & a7, A8 & a8, A9 & a9) const
00132 {
00133 list9<A1 &, A2 &, A3 &, A4 &, A5 &, A6 &, A7 &, A8 &, A9 &> a(a1, a2, a3, a4, a5, a6, a7, a8, a9);
00134 BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
00135 }
00136
00137 template<class A> result_type eval(A & a)
00138 {
00139 BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
00140 }
00141
00142 template<class A> result_type eval(A & a) const
00143 {
00144 BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
00145 }
00146
00147 template<class V> void accept(V & v) const
00148 {
00149 BOOST_BIND_VISIT_EACH(v, f_, 0);
00150 l_.accept(v);
00151 }
00152
00153 bool compare(this_type const & rhs) const
00154 {
00155 return ref_compare(f_, rhs.f_, 0) && l_ == rhs.l_;
00156 }
00157
00158 private:
00159
00160 F f_;
00161 L l_;