pmf_2.hpp
Go to the documentation of this file.
1 /*
2 Copyright (c) 2016 Barrett Adair
3 
4 Distributed under the Boost Software License, Version 1.0.
5 (See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
6 
7 HEADER GUARDS INTENTIONALLY OMITTED
8 DO NOT INCLUDE THIS HEADER DIRECTLY
9 
10 */
11 
12 template<typename Return, typename T, typename... Args>
13 struct set_member_function_qualifiers_t<
14  flag_map<int BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS>::value,
15  false, // IsTransactionSafe
16  false, // IsNoexcept
17  BOOST_CLBL_TRTS_CC_TAG, T, Return, Args...> {
18 
19  using type = Return(BOOST_CLBL_TRTS_CC T::*)(Args...)
21 };
22 
23 template<typename Return, typename T, typename... Args>
24 struct set_member_function_qualifiers_t<
25  flag_map<int BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS>::value,
26  false,
27  true,
28  BOOST_CLBL_TRTS_CC_TAG, T, Return, Args...> {
29 
30  using type = Return(BOOST_CLBL_TRTS_CC T::*)(Args...)
33 };
34 
35 template<typename Return, typename T, typename... Args>
36 struct set_member_function_qualifiers_t<
37  flag_map<int BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS>::value,
38  true,
39  false,
40  BOOST_CLBL_TRTS_CC_TAG, T, Return, Args...> {
41 
42  using type = Return(BOOST_CLBL_TRTS_CC T::*)(Args...)
45 };
46 
47 template<typename Return, typename T, typename... Args>
48 struct set_member_function_qualifiers_t<
49  flag_map<int BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS>::value,
50  true,
51  true,
52  BOOST_CLBL_TRTS_CC_TAG, T, Return, Args...> {
53 
54  using type = Return(BOOST_CLBL_TRTS_CC T::*)(Args...)
58 };
59 
60 #define BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE
61 #define BOOST_CLBL_TRTS_IS_TRANSACTION_SAFE std::false_type
63 #undef BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE
64 #undef BOOST_CLBL_TRTS_IS_TRANSACTION_SAFE
65 
66 #ifdef BOOST_CLBL_TRTS_ENABLE_TRANSACTION_SAFE
67 
68 #define BOOST_CLBL_TRTS_IS_TRANSACTION_SAFE std::true_type
69 #define BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE transaction_safe
71 #undef BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE
72 #undef BOOST_CLBL_TRTS_IS_TRANSACTION_SAFE
73 
74 #endif
#define BOOST_CLBL_TRTS_TRANSACTION_SAFE_SPECIFIER
Definition: config.hpp:37
#define BOOST_CLBL_TRTS_NOEXCEPT_SPECIFIER
Definition: config.hpp:106
#define BOOST_CLBL_TRTS_CC_TAG
Definition: function.hpp:81
#define BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS
Definition: function.hpp:72
#define BOOST_CLBL_TRTS_CC
Definition: function.hpp:83
Return(BOOST_CLBL_TRTS_CC T::*)(Args...) BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS BOOST_CLBL_TRTS_NOEXCEPT_SPECIFIER type
Definition: pmf_2.hpp:32
Return(BOOST_CLBL_TRTS_CC T::*)(Args...) BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS BOOST_CLBL_TRTS_TRANSACTION_SAFE_SPECIFIER BOOST_CLBL_TRTS_NOEXCEPT_SPECIFIER type
Definition: pmf_2.hpp:57
Return(BOOST_CLBL_TRTS_CC T::*)(Args...) BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS BOOST_CLBL_TRTS_TRANSACTION_SAFE_SPECIFIER type
Definition: pmf_2.hpp:44