result_of_iterate.hpp

来自「Boost provides free peer-reviewed portab」· HPP 代码 · 共 90 行

HPP
90
字号
// Boost result_of library//  Copyright Douglas Gregor 2004. 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/libs/utility#if !defined(BOOST_PP_IS_ITERATING)# error Boost result_of - do not include this file!#endif// CWPro8 requires an argument in a function type specialization#if BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3002)) && BOOST_PP_ITERATION() == 0# define BOOST_RESULT_OF_ARGS void#else# define BOOST_RESULT_OF_ARGS BOOST_PP_ENUM_PARAMS(BOOST_PP_ITERATION(),T)#endif#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x551))template<typename F BOOST_PP_COMMA_IF(BOOST_PP_ITERATION())         BOOST_PP_ENUM_PARAMS(BOOST_PP_ITERATION(),typename T)>struct result_of<F(BOOST_RESULT_OF_ARGS)>    : boost::detail::result_of_impl<F, F(BOOST_RESULT_OF_ARGS), (boost::detail::has_result_type<F>::value)> {};#endif#undef BOOST_RESULT_OF_ARGS#if BOOST_PP_ITERATION() >= 1 namespace detail {template<typename R,  typename FArgs BOOST_PP_COMMA_IF(BOOST_PP_ITERATION())         BOOST_PP_ENUM_PARAMS(BOOST_PP_ITERATION(),typename T)>struct result_of_impl<R (*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_ITERATION(),T)), FArgs, false>{  typedef R type;};template<typename R,  typename FArgs BOOST_PP_COMMA_IF(BOOST_PP_ITERATION())         BOOST_PP_ENUM_PARAMS(BOOST_PP_ITERATION(),typename T)>struct result_of_impl<R (&)(BOOST_PP_ENUM_PARAMS(BOOST_PP_ITERATION(),T)), FArgs, false>{  typedef R type;};#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x551))template<typename R, typename FArgs BOOST_PP_COMMA_IF(BOOST_PP_ITERATION())         BOOST_PP_ENUM_PARAMS(BOOST_PP_ITERATION(),typename T)>struct result_of_impl<R (T0::*)                     (BOOST_PP_ENUM_SHIFTED_PARAMS(BOOST_PP_ITERATION(),T)),                 FArgs, false>{  typedef R type;};template<typename R, typename FArgs BOOST_PP_COMMA_IF(BOOST_PP_ITERATION())         BOOST_PP_ENUM_PARAMS(BOOST_PP_ITERATION(),typename T)>struct result_of_impl<R (T0::*)                     (BOOST_PP_ENUM_SHIFTED_PARAMS(BOOST_PP_ITERATION(),T))                     const,                 FArgs, false>{  typedef R type;};template<typename R, typename FArgs BOOST_PP_COMMA_IF(BOOST_PP_ITERATION())         BOOST_PP_ENUM_PARAMS(BOOST_PP_ITERATION(),typename T)>struct result_of_impl<R (T0::*)                     (BOOST_PP_ENUM_SHIFTED_PARAMS(BOOST_PP_ITERATION(),T))                     volatile,                 FArgs, false>{  typedef R type;};template<typename R, typename FArgs BOOST_PP_COMMA_IF(BOOST_PP_ITERATION())         BOOST_PP_ENUM_PARAMS(BOOST_PP_ITERATION(),typename T)>struct result_of_impl<R (T0::*)                     (BOOST_PP_ENUM_SHIFTED_PARAMS(BOOST_PP_ITERATION(),T))                     const volatile,                 FArgs, false>{  typedef R type;};#endif}#endif

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?