Created
June 17, 2009 02:01
-
-
Save hwada/131030 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// 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 | |
#ifndef BOOST_RESULT_OF_S_HPP | |
#define BOOST_RESULT_OF_S_HPP | |
#ifndef BOOST_RESULT_OF_S_NUM_ARGS | |
# define BOOST_RESULT_OF_S_NUM_ARGS 10 | |
#endif | |
// original | |
#include <boost/utility/result_of.hpp> | |
#define BOOST_RESULT_OF_S_CC __stdcall | |
namespace boost { | |
template<typename F> struct result_of; | |
#if !defined(BOOST_NO_SFINAE) && !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) | |
namespace detail { | |
//BOOST_MPL_HAS_XXX_TRAIT_DEF(result_type) | |
template<typename F, typename FArgs, bool HasResultType> struct result_of_impl; | |
//template<typename F> | |
//struct result_of_void_impl | |
//{ | |
// typedef void type; | |
//}; | |
template<typename R> | |
struct result_of_void_impl<R (BOOST_RESULT_OF_S_CC *)(void)> | |
{ | |
typedef R type; | |
}; | |
template<typename R> | |
struct result_of_void_impl<R (BOOST_RESULT_OF_S_CC &)(void)> | |
{ | |
typedef R type; | |
}; | |
//template<typename F, typename FArgs> | |
//struct result_of_impl<F, FArgs, true> | |
//{ | |
// typedef typename F::result_type type; | |
//}; | |
//template<typename FArgs> | |
//struct is_function_with_no_args : mpl::false_ {}; | |
//template<typename F> | |
//struct is_function_with_no_args<F(void)> : mpl::true_ {}; | |
//template<typename F, typename FArgs> | |
//struct result_of_nested_result : F::template result<FArgs> | |
//{}; | |
//template<typename F, typename FArgs> | |
//struct result_of_impl<F, FArgs, false> | |
// : mpl::if_<is_function_with_no_args<FArgs>, | |
// result_of_void_impl<F>, | |
// result_of_nested_result<F, FArgs> >::type | |
//{}; | |
} // end namespace detail | |
//#define BOOST_PP_ITERATION_PARAMS_1 (3,(0,BOOST_RESULT_OF_S_NUM_ARGS,<boost/utility/detail/result_of_iterate.hpp>)) | |
#define BOOST_PP_ITERATION_PARAMS_1 (3,(0,BOOST_RESULT_OF_S_NUM_ARGS,"result_of_iterate_s.hpp")) | |
#include BOOST_PP_ITERATE() | |
#else | |
# define BOOST_NO_RESULT_OF 1 | |
#endif | |
} | |
#undef BOOST_RESULT_OF_S_CC | |
#endif // BOOST_RESULT_OF_S_HPP |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment