summaryrefslogtreecommitdiff
path: root/shared/loki/Function.h
diff options
context:
space:
mode:
Diffstat (limited to 'shared/loki/Function.h')
-rw-r--r--shared/loki/Function.h598
1 files changed, 299 insertions, 299 deletions
diff --git a/shared/loki/Function.h b/shared/loki/Function.h
index 2d0ad4bb..f2badfe9 100644
--- a/shared/loki/Function.h
+++ b/shared/loki/Function.h
@@ -1,12 +1,12 @@
////////////////////////////////////////////////////////////////////////////////
// The Loki Library
// Copyright (c) 2005 Peter Kümmel
-// Permission to use, copy, modify, distribute and sell this software for any
-// purpose is hereby granted without fee, provided that the above copyright
-// notice appear in all copies and that both that copyright notice and this
+// Permission to use, copy, modify, distribute and sell this software for any
+// purpose is hereby granted without fee, provided that the above copyright
+// notice appear in all copies and that both that copyright notice and this
// permission notice appear in supporting documentation.
-// The author makes no representations about the
-// suitability of this software for any purpose. It is provided "as is"
+// The author makes no representations about the
+// suitability of this software for any purpose. It is provided "as is"
// without express or implied warranty.
////////////////////////////////////////////////////////////////////////////////
#ifndef LOKI_FUNCTION_INC_
@@ -25,63 +25,63 @@
namespace Loki
{
- ////////////////////////////////////////////////////////////////////////////////
- /// \struct Function
- ///
- /// \ingroup FunctorGroup
- /// Allows a boost/TR1 like usage of Functor.
- ///
- /// \par Usage
- ///
- /// - free functions: e.g. \code Function<int(int,int)> f(&freeFunction);
- /// \endcode
- /// - member functions: e.g \code Function<int()> f(&object,&ObjectType::memberFunction);
- /// \endcode
- ///
- /// see also test/Function/FunctionTest.cpp (the modified test program from boost)
- ////////////////////////////////////////////////////////////////////////////////
-
- template<class R = void()>
- struct Function;
-
-
- template<class R>
- struct Function<R()> : public Functor<R>
- {
- typedef Functor<R> FBase;
-
- Function() : FBase() {}
-
- Function(const Function& func) : FBase()
- {
- if( !func.empty())
- FBase::operator=(func);
- }
-
- // test on emptiness
- template<class R2>
- Function(Function<R2()> func) : FBase()
- {
- if(!func.empty())
- FBase::operator=(func);
- }
-
- // clear by '= 0'
- Function(const int i) : FBase()
- {
- if(i==0)
- FBase::clear();
- else
- throw std::runtime_error("Loki::Function(const int i): i!=0");
- }
-
- template<class Func>
- Function(Func func) : FBase(func) {}
+////////////////////////////////////////////////////////////////////////////////
+/// \struct Function
+///
+/// \ingroup FunctorGroup
+/// Allows a boost/TR1 like usage of Functor.
+///
+/// \par Usage
+///
+/// - free functions: e.g. \code Function<int(int,int)> f(&freeFunction);
+/// \endcode
+/// - member functions: e.g \code Function<int()> f(&object,&ObjectType::memberFunction);
+/// \endcode
+///
+/// see also test/Function/FunctionTest.cpp (the modified test program from boost)
+////////////////////////////////////////////////////////////////////////////////
+
+template<class R = void()>
+struct Function;
+
+
+template<class R>
+struct Function<R()> : public Functor<R>
+{
+ typedef Functor<R> FBase;
- template<class Host, class Func>
- Function(const Host& host, const Func& func) : FBase(host,func) {}
+ Function() : FBase() {}
- };
+Function(const Function& func) : FBase()
+{
+ if( !func.empty())
+ FBase::operator=(func);
+}
+
+// test on emptiness
+template<class R2>
+Function(Function<R2()> func) : FBase()
+{
+ if(!func.empty())
+ FBase::operator=(func);
+}
+
+// clear by '= 0'
+Function(const int i) : FBase()
+{
+ if(i==0)
+ FBase::clear();
+ else
+ throw std::runtime_error("Loki::Function(const int i): i!=0");
+}
+
+template<class Func>
+Function(Func func) : FBase(func) {}
+
+template<class Host, class Func>
+Function(const Host& host, const Func& func) : FBase(host,func) {}
+
+};
////////////////////////////////////////////////////////////////////////////////
@@ -113,7 +113,7 @@ namespace Loki
template<class Host, class Func> \
Function(const Host& host, const Func& func): FBase(host,func) {}
-
+
#define LOKI_FUNCTION_R2_CTOR_BODY \
\
: FBase() \
@@ -127,245 +127,245 @@ namespace Loki
// repetitions
////////////////////////////////////////////////////////////////////////////////
- template<>
- struct Function<>
+template<>
+struct Function<>
: public Loki::Functor<>
- {
- typedef Functor<> FBase;
-
- template<class R2>
- Function(Function<R2()> func)
- LOKI_FUNCTION_R2_CTOR_BODY
-
- LOKI_FUNCTION_BODY // if compilation breaks here then
- // Function.h was not included before
- // Functor.h, check your include order
- // or define LOKI_ENABLE_FUNCTION
- };
-
- template<class R,class P01>
- struct Function<R(P01)>
- : public Loki::Functor<R, Seq<P01> >
- {
- typedef Functor<R, Seq<P01> > FBase;
-
- template<class R2,class Q01>
- Function(Function<R2(Q01)> func)
- LOKI_FUNCTION_R2_CTOR_BODY
-
- LOKI_FUNCTION_BODY
- };
-
- template<class R,class P01,class P02>
- struct Function<R(P01,P02)>
- : public Functor<R, Seq<P01,P02> >
- {
- typedef Functor<R, Seq<P01,P02> > FBase;
-
- template<class R2,class Q01, class Q02>
- Function(Function<R2(Q01,Q02)> func)
- LOKI_FUNCTION_R2_CTOR_BODY
-
- LOKI_FUNCTION_BODY
- };
-
- template<class R,class P01,class P02, class P03>
- struct Function<R(P01,P02,P03)>
- : public Functor<R, Seq<P01,P02,P03> >
- {
- typedef Functor<R, Seq<P01,P02,P03> > FBase;
-
- template<class R2,class Q01, class Q02,class Q03>
- Function(Function<R2(Q01,Q02,Q03)> func)
- LOKI_FUNCTION_R2_CTOR_BODY
-
- LOKI_FUNCTION_BODY
- };
-
- template<class R,class P01,class P02, class P03,class P04>
- struct Function<R(P01,P02,P03,P04)>
- : public Functor<R, Seq<P01,P02,P03,P04> >
- {
- typedef Functor<R, Seq<P01,P02,P03,P04> > FBase;
-
- template<class R2,class Q01,class Q02, class Q03,class Q04>
- Function(Function<R2(Q01,Q02,Q03,Q04)> func)
- LOKI_FUNCTION_R2_CTOR_BODY
-
- LOKI_FUNCTION_BODY
- };
-
- template<class R,class P01,class P02, class P03,class P04,class P05>
- struct Function<R(P01,P02,P03,P04,P05)>
- : public Functor<R, Seq<P01,P02,P03,P04,P05> >
- {
- typedef Functor<R, Seq<P01,P02,P03,P04,P05> > FBase;
-
- template<class R2,class Q01,class Q02, class Q03,class Q04,class Q05>
- Function(Function<R2(Q01,Q02,Q03,Q04,Q05)> func)
- LOKI_FUNCTION_R2_CTOR_BODY
-
- LOKI_FUNCTION_BODY
- };
-
- template<class R, class P01,class P02, class P03,class P04,class P05,
- class P06>
- struct Function<R(P01,P02,P03,P04,P05,P06)>
- : public Functor<R, Seq<P01,P02,P03,P04,P05,P06> >
- {
- typedef Functor<R, Seq<P01,P02,P03,P04,P05,P06> > FBase;
-
- template<class R2, class Q01,class Q02, class Q03,class Q04,class Q05,
- class Q06>
- Function(Function<R2(Q01,Q02,Q03,Q04,Q05,Q06)> func)
- LOKI_FUNCTION_R2_CTOR_BODY
-
- LOKI_FUNCTION_BODY
- };
-
- template<class R, class P01,class P02, class P03,class P04,class P05,
- class P06,class P07>
- struct Function<R(P01,P02,P03,P04,P05,P06,P07)>
- : public Functor<R, Seq<P01,P02,P03,P04,P05,P06,P07> >
- {
- typedef Functor<R, Seq<P01,P02,P03,P04,P05,P06,P07> > FBase;
-
- template<class R2, class Q01,class Q02, class Q03,class Q04,class Q05,
- class Q06,class Q07>
- Function(Function<R2(Q01,Q02,Q03,Q04,Q05,Q06,Q07)> func)
- LOKI_FUNCTION_R2_CTOR_BODY
-
- LOKI_FUNCTION_BODY
- };
-
- template<class R, class P01,class P02, class P03,class P04,class P05,
- class P06,class P07, class P08>
- struct Function<R(P01,P02,P03,P04,P05,P06,P07,P08)>
- : public Functor<R, Seq<P01,P02,P03,P04,P05,P06,P07,P08> >
- {
- typedef Functor<R, Seq<P01,P02,P03,P04,P05,P06,P07,P08> > FBase;
-
- template<class R2, class Q01,class Q02, class Q03,class Q04,class Q05,
- class Q06,class Q07, class Q08>
- Function(Function<R2(Q01,Q02,Q03,Q04,Q05,Q06,Q07,Q08)> func)
- LOKI_FUNCTION_R2_CTOR_BODY
-
- LOKI_FUNCTION_BODY
- };
-
- template<class R, class P01,class P02, class P03,class P04,class P05,
- class P06,class P07, class P08,class P09>
- struct Function<R(P01,P02,P03,P04,P05,P06,P07,P08,P09)>
- : public Functor<R, Seq<P01,P02,P03,P04,P05,P06,P07,P08,P09> >
- {
- typedef Functor<R, Seq<P01,P02,P03,P04,P05,P06,P07,P08,P09 > > FBase;
-
- template<class R2, class Q01,class Q02, class Q03,class Q04,class Q05,
- class Q06,class Q07, class Q08,class Q09>
- Function(Function<R2(Q01,Q02,Q03,Q04,Q05,Q06,Q07,Q08,Q09)> func)
- LOKI_FUNCTION_R2_CTOR_BODY
-
- LOKI_FUNCTION_BODY
- };
-
- template<class R, class P01,class P02, class P03,class P04,class P05,
- class P06,class P07, class P08,class P09,class P10>
- struct Function<R(P01,P02,P03,P04,P05,P06,P07,P08,P09,P10)>
- : public Functor<R, Seq<P01,P02,P03,P04,P05,P06,P07,P08,P09,P10> >
- {
- typedef Functor<R, Seq<P01,P02,P03,P04,P05,P06,P07,P08,P09,P10> > FBase;
-
- template<class R2, class Q01,class Q02, class Q03,class Q04,class Q05,
- class Q06,class Q07, class Q08,class Q09,class Q10>
- Function(Function<R2(Q01,Q02,Q03,Q04,Q05,Q06,Q07,Q08,Q09,Q10)> func)
- LOKI_FUNCTION_R2_CTOR_BODY
-
- LOKI_FUNCTION_BODY
- };
-
- template<class R, class P01,class P02, class P03,class P04,class P05,
- class P06,class P07, class P08,class P09,class P10,
- class P11>
- struct Function<R(P01,P02,P03,P04,P05,P06,P07,P08,P09,P10,P11)>
- : public Functor<R, Seq<P01,P02,P03,P04,P05,P06,P07,P08,P09,P10,P11> >
- {
- typedef Functor<R, Seq<P01,P02,P03,P04,P05,P06,P07,P08,P09,P10,P11> >FBase;
-
- template<class R2, class Q01,class Q02, class Q03,class Q04,class Q05,
- class Q06,class Q07, class Q08,class Q09,class Q10,
- class Q11>
- Function(Function<R2(Q01,Q02,Q03,Q04,Q05,Q06,Q07,Q08,Q09,Q10,Q11)> func)
- LOKI_FUNCTION_R2_CTOR_BODY
-
- LOKI_FUNCTION_BODY
- };
-
- template<class R, class P01,class P02, class P03,class P04,class P05,
- class P06,class P07, class P08,class P09,class P10,
- class P11,class P12>
- struct Function<R(P01,P02,P03,P04,P05,P06,P07,P08,P09,P10,P11,P12)>
- : public Functor<R, Seq<P01,P02,P03,P04,P05,P06,P07,P08,P09,P10,P11,P12> >
- {
- typedef Functor<R, Seq<P01,P02,P03,P04,P05,P06,P07,P08,P09,P10,P11,P12> > FBase;
-
- template<class R2, class Q01,class Q02, class Q03,class Q04,class Q05,
- class Q06,class Q07, class Q08,class Q09,class Q10,
- class Q11,class Q12>
- Function(Function<R2(Q01,Q02,Q03,Q04,Q05,Q06,Q07,Q08,Q09,Q10,Q11,Q12)> func)
- LOKI_FUNCTION_R2_CTOR_BODY
-
- LOKI_FUNCTION_BODY
- };
-
- template<class R, class P01,class P02, class P03,class P04,class P05,
- class P06,class P07, class P08,class P09,class P10,
- class P11,class P12, class P13>
- struct Function<R(P01,P02,P03,P04,P05,P06,P07,P08,P09,P10,P11,P12,P13)>
- : public Functor<R, Seq<P01,P02,P03,P04,P05,P06,P07,P08,P09,P10,P11,P12,P13> >
- {
- typedef Functor<R, Seq<P01,P02,P03,P04,P05,P06,P07,P08,P09,P10,P11,P12,P13> > FBase;
-
- template<class R2, class Q01,class Q02, class Q03,class Q04,class Q05,
- class Q06,class Q07, class Q08,class Q09,class Q10,
- class Q11,class Q12, class Q13>
- Function(Function<R2(Q01,Q02,Q03,Q04,Q05,Q06,Q07,Q08,Q09,Q10,Q11,Q12,Q13)> func)
- LOKI_FUNCTION_R2_CTOR_BODY
-
- LOKI_FUNCTION_BODY
- };
-
- template<class R, class P01,class P02, class P03,class P04,class P05,
- class P06,class P07, class P08,class P09,class P10,
- class P11,class P12, class P13,class P14>
- struct Function<R(P01,P02,P03,P04,P05,P06,P07,P08,P09,P10,P11,P12,P13,P14)>
- : public Functor<R, Seq<P01,P02,P03,P04,P05,P06,P07,P08,P09,P10,P11,P12,P13,P14> >
- {
- typedef Functor<R, Seq<P01,P02,P03,P04,P05,P06,P07,P08,P09,P10,P11,P12,P13,P14> > FBase;
- template<class R2, class Q01,class Q02, class Q03,class Q04,class Q05,
- class Q06,class Q07, class Q08,class Q09,class Q10,
- class Q11,class Q12, class Q13,class Q14>
- Function(Function<R2(Q01,Q02,Q03,Q04,Q05,Q06,Q07,Q08,Q09,Q10,Q11,Q12,Q13,Q14)> func)
- LOKI_FUNCTION_R2_CTOR_BODY
-
- LOKI_FUNCTION_BODY
- };
-
- template<class R, class P01,class P02, class P03,class P04,class P05,
- class P06,class P07, class P08,class P09,class P10,
- class P11,class P12, class P13,class P14,class P15>
- struct Function<R(P01,P02,P03,P04,P05,P06,P07,P08,P09,P10,P11,P12,P13,P14,P15)>
- : public Functor<R, Seq<P01,P02,P03,P04,P05,P06,P07,P08,P09,P10,P11,P12,P13,P14,P15> >
- {
- typedef Functor<R, Seq<P01,P02,P03,P04,P05,P06,P07,P08,P09,P10,P11,P12,P13,P14,P15> > FBase;
-
- template<class R2, class Q01,class Q02, class Q03,class Q04,class Q05,
- class Q06,class Q07, class Q08,class Q09,class Q10,
- class Q11,class Q12, class Q13,class Q14,class Q15>
- Function(Function<R2(Q01,Q02,Q03,Q04,Q05,Q06,Q07,Q08,Q09,Q10,Q11,Q12,Q13,Q14,Q15)> func)
- LOKI_FUNCTION_R2_CTOR_BODY
-
- LOKI_FUNCTION_BODY
- };
+{
+ typedef Functor<> FBase;
+
+ template<class R2>
+ Function(Function<R2()> func)
+ LOKI_FUNCTION_R2_CTOR_BODY
+
+ LOKI_FUNCTION_BODY // if compilation breaks here then
+ // Function.h was not included before
+ // Functor.h, check your include order
+ // or define LOKI_ENABLE_FUNCTION
+};
+
+template<class R,class P01>
+struct Function<R(P01)>
+: public Loki::Functor<R, Seq<P01> >
+{
+ typedef Functor<R, Seq<P01> > FBase;
+
+ template<class R2,class Q01>
+ Function(Function<R2(Q01)> func)
+ LOKI_FUNCTION_R2_CTOR_BODY
+
+ LOKI_FUNCTION_BODY
+};
+
+template<class R,class P01,class P02>
+struct Function<R(P01,P02)>
+: public Functor<R, Seq<P01,P02> >
+{
+ typedef Functor<R, Seq<P01,P02> > FBase;
+
+ template<class R2,class Q01, class Q02>
+ Function(Function<R2(Q01,Q02)> func)
+ LOKI_FUNCTION_R2_CTOR_BODY
+
+ LOKI_FUNCTION_BODY
+};
+
+template<class R,class P01,class P02, class P03>
+struct Function<R(P01,P02,P03)>
+: public Functor<R, Seq<P01,P02,P03> >
+{
+ typedef Functor<R, Seq<P01,P02,P03> > FBase;
+
+ template<class R2,class Q01, class Q02,class Q03>
+ Function(Function<R2(Q01,Q02,Q03)> func)
+ LOKI_FUNCTION_R2_CTOR_BODY
+
+ LOKI_FUNCTION_BODY
+};
+
+template<class R,class P01,class P02, class P03,class P04>
+struct Function<R(P01,P02,P03,P04)>
+: public Functor<R, Seq<P01,P02,P03,P04> >
+{
+ typedef Functor<R, Seq<P01,P02,P03,P04> > FBase;
+
+ template<class R2,class Q01,class Q02, class Q03,class Q04>
+ Function(Function<R2(Q01,Q02,Q03,Q04)> func)
+ LOKI_FUNCTION_R2_CTOR_BODY
+
+ LOKI_FUNCTION_BODY
+};
+
+template<class R,class P01,class P02, class P03,class P04,class P05>
+struct Function<R(P01,P02,P03,P04,P05)>
+: public Functor<R, Seq<P01,P02,P03,P04,P05> >
+{
+ typedef Functor<R, Seq<P01,P02,P03,P04,P05> > FBase;
+
+ template<class R2,class Q01,class Q02, class Q03,class Q04,class Q05>
+ Function(Function<R2(Q01,Q02,Q03,Q04,Q05)> func)
+ LOKI_FUNCTION_R2_CTOR_BODY
+
+ LOKI_FUNCTION_BODY
+};
+
+template<class R, class P01,class P02, class P03,class P04,class P05,
+ class P06>
+struct Function<R(P01,P02,P03,P04,P05,P06)>
+: public Functor<R, Seq<P01,P02,P03,P04,P05,P06> >
+{
+ typedef Functor<R, Seq<P01,P02,P03,P04,P05,P06> > FBase;
+
+ template<class R2, class Q01,class Q02, class Q03,class Q04,class Q05,
+ class Q06>
+ Function(Function<R2(Q01,Q02,Q03,Q04,Q05,Q06)> func)
+ LOKI_FUNCTION_R2_CTOR_BODY
+
+ LOKI_FUNCTION_BODY
+};
+
+template<class R, class P01,class P02, class P03,class P04,class P05,
+ class P06,class P07>
+struct Function<R(P01,P02,P03,P04,P05,P06,P07)>
+: public Functor<R, Seq<P01,P02,P03,P04,P05,P06,P07> >
+{
+ typedef Functor<R, Seq<P01,P02,P03,P04,P05,P06,P07> > FBase;
+
+ template<class R2, class Q01,class Q02, class Q03,class Q04,class Q05,
+ class Q06,class Q07>
+ Function(Function<R2(Q01,Q02,Q03,Q04,Q05,Q06,Q07)> func)
+ LOKI_FUNCTION_R2_CTOR_BODY
+
+ LOKI_FUNCTION_BODY
+};
+
+template<class R, class P01,class P02, class P03,class P04,class P05,
+ class P06,class P07, class P08>
+struct Function<R(P01,P02,P03,P04,P05,P06,P07,P08)>
+: public Functor<R, Seq<P01,P02,P03,P04,P05,P06,P07,P08> >
+{
+ typedef Functor<R, Seq<P01,P02,P03,P04,P05,P06,P07,P08> > FBase;
+
+ template<class R2, class Q01,class Q02, class Q03,class Q04,class Q05,
+ class Q06,class Q07, class Q08>
+ Function(Function<R2(Q01,Q02,Q03,Q04,Q05,Q06,Q07,Q08)> func)
+ LOKI_FUNCTION_R2_CTOR_BODY
+
+ LOKI_FUNCTION_BODY
+};
+
+template<class R, class P01,class P02, class P03,class P04,class P05,
+ class P06,class P07, class P08,class P09>
+struct Function<R(P01,P02,P03,P04,P05,P06,P07,P08,P09)>
+: public Functor<R, Seq<P01,P02,P03,P04,P05,P06,P07,P08,P09> >
+{
+ typedef Functor<R, Seq<P01,P02,P03,P04,P05,P06,P07,P08,P09 > > FBase;
+
+ template<class R2, class Q01,class Q02, class Q03,class Q04,class Q05,
+ class Q06,class Q07, class Q08,class Q09>
+ Function(Function<R2(Q01,Q02,Q03,Q04,Q05,Q06,Q07,Q08,Q09)> func)
+ LOKI_FUNCTION_R2_CTOR_BODY
+
+ LOKI_FUNCTION_BODY
+};
+
+template<class R, class P01,class P02, class P03,class P04,class P05,
+ class P06,class P07, class P08,class P09,class P10>
+struct Function<R(P01,P02,P03,P04,P05,P06,P07,P08,P09,P10)>
+: public Functor<R, Seq<P01,P02,P03,P04,P05,P06,P07,P08,P09,P10> >
+{
+ typedef Functor<R, Seq<P01,P02,P03,P04,P05,P06,P07,P08,P09,P10> > FBase;
+
+ template<class R2, class Q01,class Q02, class Q03,class Q04,class Q05,
+ class Q06,class Q07, class Q08,class Q09,class Q10>
+ Function(Function<R2(Q01,Q02,Q03,Q04,Q05,Q06,Q07,Q08,Q09,Q10)> func)
+ LOKI_FUNCTION_R2_CTOR_BODY
+
+ LOKI_FUNCTION_BODY
+};
+
+template<class R, class P01,class P02, class P03,class P04,class P05,
+ class P06,class P07, class P08,class P09,class P10,
+ class P11>
+struct Function<R(P01,P02,P03,P04,P05,P06,P07,P08,P09,P10,P11)>
+: public Functor<R, Seq<P01,P02,P03,P04,P05,P06,P07,P08,P09,P10,P11> >
+{
+ typedef Functor<R, Seq<P01,P02,P03,P04,P05,P06,P07,P08,P09,P10,P11> >FBase;
+
+ template<class R2, class Q01,class Q02, class Q03,class Q04,class Q05,
+ class Q06,class Q07, class Q08,class Q09,class Q10,
+ class Q11>
+ Function(Function<R2(Q01,Q02,Q03,Q04,Q05,Q06,Q07,Q08,Q09,Q10,Q11)> func)
+ LOKI_FUNCTION_R2_CTOR_BODY
+
+ LOKI_FUNCTION_BODY
+};
+
+template<class R, class P01,class P02, class P03,class P04,class P05,
+ class P06,class P07, class P08,class P09,class P10,
+ class P11,class P12>
+struct Function<R(P01,P02,P03,P04,P05,P06,P07,P08,P09,P10,P11,P12)>
+: public Functor<R, Seq<P01,P02,P03,P04,P05,P06,P07,P08,P09,P10,P11,P12> >
+{
+ typedef Functor<R, Seq<P01,P02,P03,P04,P05,P06,P07,P08,P09,P10,P11,P12> > FBase;
+
+ template<class R2, class Q01,class Q02, class Q03,class Q04,class Q05,
+ class Q06,class Q07, class Q08,class Q09,class Q10,
+ class Q11,class Q12>
+ Function(Function<R2(Q01,Q02,Q03,Q04,Q05,Q06,Q07,Q08,Q09,Q10,Q11,Q12)> func)
+ LOKI_FUNCTION_R2_CTOR_BODY
+
+ LOKI_FUNCTION_BODY
+};
+
+template<class R, class P01,class P02, class P03,class P04,class P05,
+ class P06,class P07, class P08,class P09,class P10,
+ class P11,class P12, class P13>
+struct Function<R(P01,P02,P03,P04,P05,P06,P07,P08,P09,P10,P11,P12,P13)>
+: public Functor<R, Seq<P01,P02,P03,P04,P05,P06,P07,P08,P09,P10,P11,P12,P13> >
+{
+ typedef Functor<R, Seq<P01,P02,P03,P04,P05,P06,P07,P08,P09,P10,P11,P12,P13> > FBase;
+
+ template<class R2, class Q01,class Q02, class Q03,class Q04,class Q05,
+ class Q06,class Q07, class Q08,class Q09,class Q10,
+ class Q11,class Q12, class Q13>
+ Function(Function<R2(Q01,Q02,Q03,Q04,Q05,Q06,Q07,Q08,Q09,Q10,Q11,Q12,Q13)> func)
+ LOKI_FUNCTION_R2_CTOR_BODY
+
+ LOKI_FUNCTION_BODY
+};
+
+template<class R, class P01,class P02, class P03,class P04,class P05,
+ class P06,class P07, class P08,class P09,class P10,
+ class P11,class P12, class P13,class P14>
+struct Function<R(P01,P02,P03,P04,P05,P06,P07,P08,P09,P10,P11,P12,P13,P14)>
+: public Functor<R, Seq<P01,P02,P03,P04,P05,P06,P07,P08,P09,P10,P11,P12,P13,P14> >
+{
+ typedef Functor<R, Seq<P01,P02,P03,P04,P05,P06,P07,P08,P09,P10,P11,P12,P13,P14> > FBase;
+ template<class R2, class Q01,class Q02, class Q03,class Q04,class Q05,
+ class Q06,class Q07, class Q08,class Q09,class Q10,
+ class Q11,class Q12, class Q13,class Q14>
+ Function(Function<R2(Q01,Q02,Q03,Q04,Q05,Q06,Q07,Q08,Q09,Q10,Q11,Q12,Q13,Q14)> func)
+ LOKI_FUNCTION_R2_CTOR_BODY
+
+ LOKI_FUNCTION_BODY
+};
+
+template<class R, class P01,class P02, class P03,class P04,class P05,
+ class P06,class P07, class P08,class P09,class P10,
+ class P11,class P12, class P13,class P14,class P15>
+struct Function<R(P01,P02,P03,P04,P05,P06,P07,P08,P09,P10,P11,P12,P13,P14,P15)>
+: public Functor<R, Seq<P01,P02,P03,P04,P05,P06,P07,P08,P09,P10,P11,P12,P13,P14,P15> >
+{
+ typedef Functor<R, Seq<P01,P02,P03,P04,P05,P06,P07,P08,P09,P10,P11,P12,P13,P14,P15> > FBase;
+
+ template<class R2, class Q01,class Q02, class Q03,class Q04,class Q05,
+ class Q06,class Q07, class Q08,class Q09,class Q10,
+ class Q11,class Q12, class Q13,class Q14,class Q15>
+ Function(Function<R2(Q01,Q02,Q03,Q04,Q05,Q06,Q07,Q08,Q09,Q10,Q11,Q12,Q13,Q14,Q15)> func)
+ LOKI_FUNCTION_R2_CTOR_BODY
+
+ LOKI_FUNCTION_BODY
+};
}// namespace Loki
bgstack15