// 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 BOOST_FUNCTION_FWD_HPP | |
#define BOOST_FUNCTION_FWD_HPP | |
#include <boost/config.hpp> | |
#if defined(__sgi) && defined(_COMPILER_VERSION) && _COMPILER_VERSION <= 730 && !defined(BOOST_STRICT_CONFIG) | |
// Work around a compiler bug. | |
// boost::python::objects::function has to be seen by the compiler before the | |
// boost::function class template. | |
namespace boost { namespace python { namespace objects { | |
class function; | |
}}} | |
#endif | |
#if defined (BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \ | |
|| defined(BOOST_BCB_PARTIAL_SPECIALIZATION_BUG) \ | |
|| !(defined(BOOST_STRICT_CONFIG) || !defined(__SUNPRO_CC) || __SUNPRO_CC > 0x540) | |
# define BOOST_FUNCTION_NO_FUNCTION_TYPE_SYNTAX | |
#endif | |
namespace boost { | |
class bad_function_call; | |
#if !defined(BOOST_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 |