// Boost.Function library

//  Copyright Douglas Gregor 2002-2003. 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_PROLOGUE_HPP
#define NDNBOOST_FUNCTION_PROLOGUE_HPP
#  include <cassert>
#  include <algorithm>
#  include <ndnboost/config/no_tr1/functional.hpp> // unary_function, binary_function
#  include <ndnboost/throw_exception.hpp>
#  include <ndnboost/config.hpp>
#  include <ndnboost/function/function_base.hpp>
#  include <ndnboost/mem_fn.hpp>
#  include <ndnboost/type_traits/is_integral.hpp>
#  include <ndnboost/preprocessor/enum.hpp>
#  include <ndnboost/preprocessor/enum_params.hpp>
#  include <ndnboost/preprocessor/cat.hpp>
#  include <ndnboost/preprocessor/repeat.hpp>
#  include <ndnboost/preprocessor/inc.hpp>
#  include <ndnboost/type_traits/is_void.hpp>
#endif // NDNBOOST_FUNCTION_PROLOGUE_HPP
