]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/boost/callable_traits/detail/unguarded/function_ptr_3.hpp
update sources to v12.2.3
[ceph.git] / ceph / src / boost / boost / callable_traits / detail / unguarded / function_ptr_3.hpp
1 /*
2 Copyright (c) 2016 Modified Work 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 macros used:
11
12 BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE - the transaction_safe specifier for
13 the current include (`transaction_safe` or nothing)
14
15 BOOST_CLBL_TRTS_IS_TRANSACTION_SAFE - `std::true_type` or `std::false_type`,
16 tied on whether BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE is `transaction_safe`
17
18 BOOST_CLBL_TRTS_TRANSACTION_SAFE_SPECIFIER - `transaction_safe` when
19 BOOST_CLBL_TRTS_ENABLE_TRANSACTION_SAFE is enabled, otherwise nothing
20
21 BOOST_CLBL_TRTS_NOEXCEPT_SPEC - the noexcept specifier for
22 the current include (`noexcept` or nothing)
23
24 BOOST_CLBL_TRTS_IS_NOEXCEPT - `std::true_type` or `std::false_type`,
25 tied on whether BOOST_CLBL_TRTS_NOEXCEPT_SPEC is `noexcept`
26
27 BOOST_CLBL_TRTS_NOEXCEPT_SPECIFIER - `noexcept` if
28 BOOST_CLBL_TRTS_ENABLE_NOEXCEPT_TYPES is defined, otherwise nothing
29 */
30
31 template<typename Return, typename... Args>
32 struct function<
33 BOOST_CLBL_TRTS_ST Return(BOOST_CLBL_TRTS_CC *)(Args...)
34 BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE
35 BOOST_CLBL_TRTS_NOEXCEPT_SPEC>
36 : default_callable_traits<> {
37
38 static constexpr bool value = true;
39
40 using traits = function;
41
42 using return_type = Return;
43
44 using arg_types = std::tuple<Args...>;
45 using non_invoke_arg_types = arg_types;
46
47 using type = BOOST_CLBL_TRTS_ST Return(BOOST_CLBL_TRTS_CC *)(Args...)
48 BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE;
49
50 using function_type = Return(Args...);
51 using qualified_function_type = function_type;
52 using remove_varargs = type;
53
54 using add_varargs =
55 BOOST_CLBL_TRTS_ST Return (BOOST_CLBL_TRTS_VARARGS_CC *)(Args..., ...)
56 BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE
57 BOOST_CLBL_TRTS_NOEXCEPT_SPEC;
58
59 using is_noexcept = BOOST_CLBL_TRTS_IS_NOEXCEPT;
60
61 using remove_noexcept = Return(BOOST_CLBL_TRTS_CC *)(Args...)
62 BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE;
63
64 using add_noexcept = Return(BOOST_CLBL_TRTS_CC *)(Args...)
65 BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE
66 BOOST_CLBL_TRTS_NOEXCEPT_SPECIFIER;
67
68 using is_transaction_safe = BOOST_CLBL_TRTS_IS_TRANSACTION_SAFE;
69
70 using remove_transaction_safe = Return(BOOST_CLBL_TRTS_CC *)(Args...)
71 BOOST_CLBL_TRTS_NOEXCEPT_SPEC;
72
73 using add_transaction_safe = Return(BOOST_CLBL_TRTS_CC *)(Args...)
74 BOOST_CLBL_TRTS_TRANSACTION_SAFE_SPECIFIER
75 BOOST_CLBL_TRTS_NOEXCEPT_SPEC;
76
77 template<typename U>
78 using apply_member_pointer =
79 BOOST_CLBL_TRTS_ST Return(BOOST_CLBL_TRTS_CC U::*)(Args...)
80 BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE
81 BOOST_CLBL_TRTS_NOEXCEPT_SPEC;
82
83 template<typename NewReturn>
84 using apply_return =
85 BOOST_CLBL_TRTS_ST NewReturn(BOOST_CLBL_TRTS_CC *)(Args...)
86 BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE
87 BOOST_CLBL_TRTS_NOEXCEPT_SPEC;
88
89 template<template<class...> class Container>
90 using expand_args = Container<Args...>;
91
92 using is_member_pointer = std::false_type;
93 };
94