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<BOOST_CLBL_TRTS_ST Return(BOOST_CLBL_TRTS_VARARGS_CC *)(Args..., ...)
0033     BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE
0034     BOOST_CLBL_TRTS_NOEXCEPT_SPEC>
0035  : default_callable_traits<> {
0036 
0037     static constexpr bool value = true;
0038 
0039     using has_varargs = std::true_type;
0040 
0041     using traits = function;
0042 
0043     using return_type = Return;
0044 
0045     using arg_types = std::tuple<Args...>;
0046     using non_invoke_arg_types = arg_types;
0047 
0048     using type =
0049         BOOST_CLBL_TRTS_ST Return(BOOST_CLBL_TRTS_VARARGS_CC *)(Args..., ...)
0050             BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE
0051             BOOST_CLBL_TRTS_NOEXCEPT_SPEC;
0052 
0053     using function_type = Return(Args..., ...);
0054 
0055     using qualified_function_type = function_type;
0056 
0057     using remove_varargs =
0058         BOOST_CLBL_TRTS_ST Return(BOOST_CLBL_TRTS_CC *)(Args...)
0059             BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE;
0060 
0061     using add_varargs = type;
0062 
0063     using is_noexcept = BOOST_CLBL_TRTS_IS_NOEXCEPT;
0064 
0065     using remove_noexcept = BOOST_CLBL_TRTS_ST Return(BOOST_CLBL_TRTS_CC *)(Args..., ...)
0066         BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE;
0067 
0068     using add_noexcept = BOOST_CLBL_TRTS_ST Return(BOOST_CLBL_TRTS_CC *)(Args..., ...)
0069         BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE
0070         BOOST_CLBL_TRTS_NOEXCEPT_SPECIFIER;
0071 
0072     using is_transaction_safe = BOOST_CLBL_TRTS_IS_TRANSACTION_SAFE;
0073 
0074     using remove_transaction_safe = Return(BOOST_CLBL_TRTS_VARARGS_CC *)(Args..., ...)
0075         BOOST_CLBL_TRTS_NOEXCEPT_SPEC;
0076 
0077     using add_transaction_safe = Return(BOOST_CLBL_TRTS_VARARGS_CC *)(Args..., ...)
0078         BOOST_CLBL_TRTS_TRANSACTION_SAFE_SPECIFIER
0079         BOOST_CLBL_TRTS_NOEXCEPT_SPEC;
0080 
0081     template<typename U>
0082     using apply_member_pointer =
0083         BOOST_CLBL_TRTS_ST Return(BOOST_CLBL_TRTS_VARARGS_CC U::*)(Args..., ...)
0084             BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE
0085             BOOST_CLBL_TRTS_NOEXCEPT_SPEC;
0086 
0087     template<typename NewReturn>
0088     using apply_return =
0089         BOOST_CLBL_TRTS_ST NewReturn(BOOST_CLBL_TRTS_VARARGS_CC *)(Args..., ...)
0090             BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE
0091             BOOST_CLBL_TRTS_NOEXCEPT_SPEC;
0092 
0093     template<template<class...> class Container>
0094     using expand_args = Container<Args...>;
0095 
0096     using is_member_pointer = std::false_type;
0097 };
0098