75 lines
2.4 KiB
C++
75 lines
2.4 KiB
C++
|
/*
|
||
|
Copyright (c) 2016 Barrett Adair
|
||
|
|
||
|
Distributed under the Boost Software License, Version 1.0.
|
||
|
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||
|
|
||
|
HEADER GUARDS INTENTIONALLY OMITTED
|
||
|
DO NOT INCLUDE THIS HEADER DIRECTLY
|
||
|
|
||
|
*/
|
||
|
|
||
|
template<typename Return, typename T, typename... Args>
|
||
|
struct set_member_function_qualifiers_t<
|
||
|
flag_map<int BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS>::value,
|
||
|
false, // IsTransactionSafe
|
||
|
false, // IsNoexcept
|
||
|
BOOST_CLBL_TRTS_CC_TAG, T, Return, Args...> {
|
||
|
|
||
|
using type = Return(BOOST_CLBL_TRTS_CC T::*)(Args...)
|
||
|
BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS;
|
||
|
};
|
||
|
|
||
|
template<typename Return, typename T, typename... Args>
|
||
|
struct set_member_function_qualifiers_t<
|
||
|
flag_map<int BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS>::value,
|
||
|
false,
|
||
|
true,
|
||
|
BOOST_CLBL_TRTS_CC_TAG, T, Return, Args...> {
|
||
|
|
||
|
using type = Return(BOOST_CLBL_TRTS_CC T::*)(Args...)
|
||
|
BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS
|
||
|
BOOST_CLBL_TRTS_NOEXCEPT_SPECIFIER;
|
||
|
};
|
||
|
|
||
|
template<typename Return, typename T, typename... Args>
|
||
|
struct set_member_function_qualifiers_t<
|
||
|
flag_map<int BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS>::value,
|
||
|
true,
|
||
|
false,
|
||
|
BOOST_CLBL_TRTS_CC_TAG, T, Return, Args...> {
|
||
|
|
||
|
using type = Return(BOOST_CLBL_TRTS_CC T::*)(Args...)
|
||
|
BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS
|
||
|
BOOST_CLBL_TRTS_TRANSACTION_SAFE_SPECIFIER;
|
||
|
};
|
||
|
|
||
|
template<typename Return, typename T, typename... Args>
|
||
|
struct set_member_function_qualifiers_t<
|
||
|
flag_map<int BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS>::value,
|
||
|
true,
|
||
|
true,
|
||
|
BOOST_CLBL_TRTS_CC_TAG, T, Return, Args...> {
|
||
|
|
||
|
using type = Return(BOOST_CLBL_TRTS_CC T::*)(Args...)
|
||
|
BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS
|
||
|
BOOST_CLBL_TRTS_TRANSACTION_SAFE_SPECIFIER
|
||
|
BOOST_CLBL_TRTS_NOEXCEPT_SPECIFIER;
|
||
|
};
|
||
|
|
||
|
#define BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE
|
||
|
#define BOOST_CLBL_TRTS_IS_TRANSACTION_SAFE std::false_type
|
||
|
#include <boost/callable_traits/detail/unguarded/pmf_3.hpp>
|
||
|
#undef BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE
|
||
|
#undef BOOST_CLBL_TRTS_IS_TRANSACTION_SAFE
|
||
|
|
||
|
#ifdef BOOST_CLBL_TRTS_ENABLE_TRANSACTION_SAFE
|
||
|
|
||
|
#define BOOST_CLBL_TRTS_IS_TRANSACTION_SAFE std::true_type
|
||
|
#define BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE transaction_safe
|
||
|
#include <boost/callable_traits/detail/unguarded/pmf_3.hpp>
|
||
|
#undef BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE
|
||
|
#undef BOOST_CLBL_TRTS_IS_TRANSACTION_SAFE
|
||
|
|
||
|
#endif
|