]> rtime.felk.cvut.cz Git - l4.git/blob - l4/pkg/boost-lite/include/boost/function/function_fwd.hpp
Inital import
[l4.git] / l4 / pkg / boost-lite / include / boost / function / function_fwd.hpp
1 // Boost.Function library
2 //  Copyright (C) Douglas Gregor 2008
3 //
4 //  Use, modification and distribution is subject to the Boost
5 //  Software License, Version 1.0.  (See accompanying file
6 //  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
7 //
8 // For more information, see http://www.boost.org
9 #ifndef BOOST_FUNCTION_FWD_HPP
10 #define BOOST_FUNCTION_FWD_HPP
11 #include <boost/config.hpp>
12
13 #if defined(__sgi) && defined(_COMPILER_VERSION) && _COMPILER_VERSION <= 730 && !defined(BOOST_STRICT_CONFIG)
14 // Work around a compiler bug.
15 // boost::python::objects::function has to be seen by the compiler before the
16 // boost::function class template.
17 namespace boost { namespace python { namespace objects {
18   class function;
19 }}}
20 #endif
21
22 #if defined (BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)                    \
23  || defined(BOOST_BCB_PARTIAL_SPECIALIZATION_BUG)                         \
24  || !(BOOST_STRICT_CONFIG || !defined(__SUNPRO_CC) || __SUNPRO_CC > 0x540)
25 #  define BOOST_FUNCTION_NO_FUNCTION_TYPE_SYNTAX
26 #endif
27
28 namespace boost {
29   class bad_function_call;
30
31 #if !defined(BOOST_FUNCTION_NO_FUNCTION_TYPE_SYNTAX)
32   // Preferred syntax
33   template<typename Signature> class function;
34
35   template<typename Signature>
36   inline void swap(function<Signature>& f1, function<Signature>& f2)
37   {
38     f1.swap(f2);
39   }
40 #endif // have partial specialization
41
42   // Portable syntax
43   template<typename R> class function0;
44   template<typename R, typename T1> class function1;
45   template<typename R, typename T1, typename T2> class function2;
46   template<typename R, typename T1, typename T2, typename T3> class function3;
47   template<typename R, typename T1, typename T2, typename T3, typename T4> 
48     class function4;
49   template<typename R, typename T1, typename T2, typename T3, typename T4,
50            typename T5> 
51     class function5;
52   template<typename R, typename T1, typename T2, typename T3, typename T4,
53            typename T5, typename T6> 
54     class function6;
55   template<typename R, typename T1, typename T2, typename T3, typename T4,
56            typename T5, typename T6, typename T7> 
57     class function7;
58   template<typename R, typename T1, typename T2, typename T3, typename T4,
59            typename T5, typename T6, typename T7, typename T8> 
60     class function8;
61   template<typename R, typename T1, typename T2, typename T3, typename T4,
62            typename T5, typename T6, typename T7, typename T8, typename T9> 
63     class function9;
64   template<typename R, typename T1, typename T2, typename T3, typename T4,
65            typename T5, typename T6, typename T7, typename T8, typename T9,
66            typename T10> 
67     class function10;
68 }
69
70 #endif