| // Boost.Function library |
| // Copyright (C) Douglas Gregor 2008 |
| // |
| // Use, modification and distribution is subject to the Boost |
| // Software License, Version 1.0. (See accompanying file |
| // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) |
| // |
| // For more information, see http://www.boost.org |
| #ifndef NDNBOOST_FUNCTION_FWD_HPP |
| #define NDNBOOST_FUNCTION_FWD_HPP |
| #include <ndnboost/config.hpp> |
| |
| #if defined(__sgi) && defined(_COMPILER_VERSION) && _COMPILER_VERSION <= 730 && !defined(NDNBOOST_STRICT_CONFIG) |
| // Work around a compiler bug. |
| // ndnboost::python::objects::function has to be seen by the compiler before the |
| // ndnboost::function class template. |
| namespace ndnboost { namespace python { namespace objects { |
| class function; |
| }}} |
| #endif |
| |
| #if defined (NDNBOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \ |
| || defined(NDNBOOST_BCB_PARTIAL_SPECIALIZATION_BUG) \ |
| || !(defined(NDNBOOST_STRICT_CONFIG) || !defined(__SUNPRO_CC) || __SUNPRO_CC > 0x540) |
| # define NDNBOOST_FUNCTION_NO_FUNCTION_TYPE_SYNTAX |
| #endif |
| |
| namespace ndnboost { |
| class bad_function_call; |
| |
| #if !defined(NDNBOOST_FUNCTION_NO_FUNCTION_TYPE_SYNTAX) |
| // Preferred syntax |
| template<typename Signature> class function; |
| |
| template<typename Signature> |
| inline void swap(function<Signature>& f1, function<Signature>& f2) |
| { |
| f1.swap(f2); |
| } |
| #endif // have partial specialization |
| |
| // Portable syntax |
| template<typename R> class function0; |
| template<typename R, typename T1> class function1; |
| template<typename R, typename T1, typename T2> class function2; |
| template<typename R, typename T1, typename T2, typename T3> class function3; |
| template<typename R, typename T1, typename T2, typename T3, typename T4> |
| class function4; |
| template<typename R, typename T1, typename T2, typename T3, typename T4, |
| typename T5> |
| class function5; |
| template<typename R, typename T1, typename T2, typename T3, typename T4, |
| typename T5, typename T6> |
| class function6; |
| template<typename R, typename T1, typename T2, typename T3, typename T4, |
| typename T5, typename T6, typename T7> |
| class function7; |
| template<typename R, typename T1, typename T2, typename T3, typename T4, |
| typename T5, typename T6, typename T7, typename T8> |
| class function8; |
| template<typename R, typename T1, typename T2, typename T3, typename T4, |
| typename T5, typename T6, typename T7, typename T8, typename T9> |
| class function9; |
| template<typename R, typename T1, typename T2, typename T3, typename T4, |
| typename T5, typename T6, typename T7, typename T8, typename T9, |
| typename T10> |
| class function10; |
| } |
| |
| #endif |