/* @Copyright Barrett Adair 2015-2017 Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt) */ #ifndef BOOST_CLBL_TRTS_DETAIL_PMF_HPP #define BOOST_CLBL_TRTS_DETAIL_PMF_HPP #include #include #include #include #include namespace boost { namespace callable_traits { namespace detail { template struct set_member_function_qualifiers_t; template struct set_varargs_member_function_qualifiers_t; template using set_member_function_qualifiers = typename set_member_function_qualifiers_t::type; template using set_varargs_member_function_qualifiers = typename set_varargs_member_function_qualifiers_t::type; template struct pmf : default_callable_traits {}; #define BOOST_CLBL_TRTS_CC_TAG dummy #define BOOST_CLBL_TRTS_VARARGS_CC BOOST_CLBL_TRTS_DEFAULT_VARARGS_CC #define BOOST_CLBL_TRTS_CC #include #undef BOOST_CLBL_TRTS_CC #undef BOOST_CLBL_TRTS_CC_TAG #undef BOOST_CLBL_TRTS_VARARGS_CC #define BOOST_CLBL_TRTS_CC_TAG dummy #define BOOST_CLBL_TRTS_VARARGS_CC BOOST_CLBL_TRTS_DEFAULT_VARARGS_CC #define BOOST_CLBL_TRTS_CC #include #undef BOOST_CLBL_TRTS_CC #undef BOOST_CLBL_TRTS_CC_TAG #undef BOOST_CLBL_TRTS_VARARGS_CC #ifdef BOOST_CLBL_TRTS_ENABLE_CDECL #define BOOST_CLBL_TRTS_CC_TAG cdecl_tag #define BOOST_CLBL_TRTS_VARARGS_CC __cdecl #define BOOST_CLBL_TRTS_CC __cdecl #include #undef BOOST_CLBL_TRTS_CC #undef BOOST_CLBL_TRTS_CC_TAG #undef BOOST_CLBL_TRTS_VARARGS_CC #endif // #ifdef BOOST_CLBL_TRTS_ENABLE_CDECL // Defining this macro enables undocumented features, likely broken. // Too much work to maintain, but knock yourself out #ifdef BOOST_CLBL_TRTS_ENABLE_STDCALL #define BOOST_CLBL_TRTS_CC_TAG stdcall_tag #define BOOST_CLBL_TRTS_VARARGS_CC BOOST_CLBL_TRTS_DEFAULT_VARARGS_CC #define BOOST_CLBL_TRTS_CC __stdcall #include #undef BOOST_CLBL_TRTS_CC #undef BOOST_CLBL_TRTS_CC_TAG #undef BOOST_CLBL_TRTS_VARARGS_CC #endif // #ifdef BOOST_CLBL_TRTS_ENABLE_STDCALL // Defining this macro enables undocumented features, likely broken. // Too much work to officially maintain, but knock yourself out #ifdef BOOST_CLBL_TRTS_ENABLE_FASTCALL #define BOOST_CLBL_TRTS_CC_TAG fastcall_tag #define BOOST_CLBL_TRTS_VARARGS_CC BOOST_CLBL_TRTS_DEFAULT_VARARGS_CC #define BOOST_CLBL_TRTS_CC __fastcall #include #undef BOOST_CLBL_TRTS_CC #undef BOOST_CLBL_TRTS_CC_TAG #undef BOOST_CLBL_TRTS_VARARGS_CC #endif // #ifdef BOOST_CLBL_TRTS_ENABLE_FASTCALL }}} // namespace boost::callable_traits::detail #endif // #ifndef BOOST_CLBL_TRTS_DETAIL_PMF_HPP