Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-18 09:29:44

0001 /*
0002 Copyright (c) 2016 Modified Work Barrett Adair
0003 
0004 Distributed under the Boost Software License, Version 1.0.
0005 (See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
0006 
0007 HEADER GUARDS INTENTIONALLY OMITTED
0008 DO NOT INCLUDE THIS HEADER DIRECTLY
0009 
0010 macros used:
0011 
0012 BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE - the transaction_safe specifier for
0013     the current include (`transaction_safe` or nothing)
0014 
0015 BOOST_CLBL_TRTS_IS_TRANSACTION_SAFE - `std::true_type` or `std::false_type`,
0016     tied on whether BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE is `transaction_safe`
0017 
0018 BOOST_CLBL_TRTS_TRANSACTION_SAFE_SPECIFIER - `transaction_safe` when
0019     BOOST_CLBL_TRTS_ENABLE_TRANSACTION_SAFE is enabled, otherwise nothing
0020 
0021 BOOST_CLBL_TRTS_NOEXCEPT_SPEC - the noexcept specifier for
0022     the current include (`noexcept` or nothing)
0023 
0024 BOOST_CLBL_TRTS_IS_NOEXCEPT - `std::true_type` or `std::false_type`,
0025     tied on whether BOOST_CLBL_TRTS_NOEXCEPT_SPEC is `noexcept`
0026 
0027 BOOST_CLBL_TRTS_NOEXCEPT_SPECIFIER - `noexcept` if
0028     BOOST_CLBL_TRTS_ENABLE_NOEXCEPT_TYPES is defined, otherwise nothing
0029 */
0030 
0031 template<typename Return, typename... Args>
0032 struct function<
0033     BOOST_CLBL_TRTS_ST Return(BOOST_CLBL_TRTS_CC *)(Args...)
0034     BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE
0035     BOOST_CLBL_TRTS_NOEXCEPT_SPEC>
0036  : default_callable_traits<> {
0037 
0038     static constexpr bool value = true;
0039 
0040     using traits = function;
0041 
0042     using return_type = Return;
0043 
0044     using arg_types = std::tuple<Args...>;
0045     using non_invoke_arg_types = arg_types;
0046 
0047     using type = BOOST_CLBL_TRTS_ST Return(BOOST_CLBL_TRTS_CC *)(Args...)
0048         BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE;
0049 
0050     using function_type = Return(Args...);
0051     using qualified_function_type = function_type;
0052     using remove_varargs = type;
0053 
0054     using add_varargs =
0055         BOOST_CLBL_TRTS_ST Return (BOOST_CLBL_TRTS_VARARGS_CC *)(Args..., ...)
0056             BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE
0057             BOOST_CLBL_TRTS_NOEXCEPT_SPEC;
0058 
0059     using is_noexcept = BOOST_CLBL_TRTS_IS_NOEXCEPT;
0060 
0061     using remove_noexcept = Return(BOOST_CLBL_TRTS_CC *)(Args...)
0062         BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE;
0063 
0064     using add_noexcept = Return(BOOST_CLBL_TRTS_CC *)(Args...)
0065         BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE
0066         BOOST_CLBL_TRTS_NOEXCEPT_SPECIFIER;
0067 
0068     using is_transaction_safe = BOOST_CLBL_TRTS_IS_TRANSACTION_SAFE;
0069 
0070     using remove_transaction_safe = Return(BOOST_CLBL_TRTS_CC *)(Args...)
0071         BOOST_CLBL_TRTS_NOEXCEPT_SPEC;
0072 
0073     using add_transaction_safe = Return(BOOST_CLBL_TRTS_CC *)(Args...)
0074         BOOST_CLBL_TRTS_TRANSACTION_SAFE_SPECIFIER
0075         BOOST_CLBL_TRTS_NOEXCEPT_SPEC;
0076 
0077     template<typename U>
0078     using apply_member_pointer =
0079         BOOST_CLBL_TRTS_ST Return(BOOST_CLBL_TRTS_CC U::*)(Args...)
0080             BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE
0081             BOOST_CLBL_TRTS_NOEXCEPT_SPEC;
0082 
0083     template<typename NewReturn>
0084     using apply_return =
0085         BOOST_CLBL_TRTS_ST NewReturn(BOOST_CLBL_TRTS_CC *)(Args...)
0086             BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE
0087             BOOST_CLBL_TRTS_NOEXCEPT_SPEC;
0088 
0089     template<template<class...> class Container>
0090     using expand_args = Container<Args...>;
0091 
0092     using is_member_pointer = std::false_type;
0093 };
0094