File indexing completed on 2025-01-30 09:34:23
0001
0002
0003
0004
0005
0006
0007
0008
0009 #ifndef BOOST_CLBL_TRTS_DETAIL_CONFIG_HPP
0010 #define BOOST_CLBL_TRTS_DETAIL_CONFIG_HPP
0011
0012 #include <type_traits>
0013 #include <tuple>
0014 #include <utility>
0015 #include <cstdint>
0016
0017 #define BOOST_CLBL_TRTS_EMPTY_
0018 #define BOOST_CLBL_TRTS_EMPTY BOOST_CLBL_TRTS_EMPTY_
0019
0020 #ifdef __cpp_transactional_memory
0021 # define BOOST_CLBL_TRTS_ENABLE_TRANSACTION_SAFE
0022 #endif
0023
0024 #ifdef __cpp_inline_variables
0025 # define BOOST_CLBL_TRAITS_INLINE_VAR inline
0026 #else
0027 # define BOOST_CLBL_TRAITS_INLINE_VAR
0028 #endif
0029
0030 #ifdef __cpp_noexcept_function_type
0031 # define BOOST_CLBL_TRTS_ENABLE_NOEXCEPT_TYPES
0032 #endif
0033
0034 #ifdef BOOST_CLBL_TRTS_ENABLE_TRANSACTION_SAFE
0035 # define BOOST_CLBL_TRTS_TRANSACTION_SAFE_SPECIFIER transaction_safe
0036 #else
0037 # define BOOST_CLBL_TRTS_TRANSACTION_SAFE_SPECIFIER
0038 #endif
0039
0040 #ifndef __clang__
0041 # if defined(__GNUC__)
0042 # define BOOST_CLBL_TRTS_GCC
0043 # if __GNUC__ >= 6
0044 # define BOOST_CLBL_TRTS_GCC_AT_LEAST_6_0_0
0045 # endif
0046 # if __GNUC__ < 5
0047 # define BOOST_CLBL_TRTS_GCC_OLDER_THAN_5_0_0
0048 # endif
0049 # if __GNUC__ >= 5
0050 # define BOOST_CLBL_TRTS_GCC_AT_LEAST_4_9_2
0051 # elif __GNUC__ == 4 && __GNUC_MINOR__ == 9 && __GNUC_PATCHLEVEL__ >= 2
0052 # define BOOST_CLBL_TRTS_GCC_AT_LEAST_4_9_2
0053 # else
0054 # define BOOST_CLBL_TRTS_GCC_OLDER_THAN_4_9_2
0055 # endif
0056 # endif
0057 #endif
0058
0059 #ifdef _MSC_VER
0060 # if !defined( __clang__ )
0061 # define BOOST_CLBL_TRTS_MSVC
0062 # if _MSC_VER < 1920
0063 # define BOOST_CLBL_TRTS_OLD_MSVC
0064 # endif
0065 # endif
0066 #endif
0067
0068 #define BOOST_CLBL_TRTS_IX_SEQ(...) ::std::index_sequence< __VA_ARGS__ >
0069 #define BOOST_CLBL_TRTS_MAKE_IX_SEQ(...) ::std::make_index_sequence< __VA_ARGS__ >
0070 #define BOOST_CLBL_TRTS_DISJUNCTION(...) ::std::disjunction< __VA_ARGS__ >
0071
0072 #ifndef __cpp_variable_templates
0073 # define BOOST_CLBL_TRTS_DISABLE_VARIABLE_TEMPLATES
0074 #endif
0075
0076 #ifndef __cpp_lib_logical_traits
0077 # include <boost/callable_traits/detail/polyfills/disjunction.hpp>
0078 #endif
0079
0080 #ifndef __cpp_lib_integer_sequence
0081 # include <boost/callable_traits/detail/polyfills/make_index_sequence.hpp>
0082 #endif
0083
0084 #if defined(BOOST_CLBL_TRTS_MSVC) && !defined(BOOST_DISABLE_WIN32)
0085 # define BOOST_CLBL_TRTS_DEFAULT_VARARGS_CC __cdecl
0086 # define BOOST_CLBL_TRTS_PMF_VARGARGS_CDECL_DEFAULT
0087 #else
0088 # define BOOST_CLBL_TRTS_DEFAULT_VARARGS_CC
0089 #endif
0090
0091 #if (defined(BOOST_CLBL_TRTS_GCC) && !defined(BOOST_CLBL_TRTS_GCC_AT_LEAST_4_9_2)) || defined(__INTEL_COMPILER)
0092 # define BOOST_CLBL_TRTS_DISABLE_REFERENCE_QUALIFIERS
0093 # define BOOST_CLBL_TRTS_DISABLE_ABOMINABLE_FUNCTIONS
0094 #endif
0095
0096 #ifdef BOOST_CLBL_TRTS_DISABLE_ABOMINABLE_FUNCTIONS
0097 # define BOOST_CLBL_TRTS_ABOMINABLE_CONST BOOST_CLBL_TRTS_EMPTY
0098 # define BOOST_CLBL_TRTS_ABOMINABLE_VOLATILE BOOST_CLBL_TRTS_EMPTY
0099 #else
0100 # define BOOST_CLBL_TRTS_ABOMINABLE_CONST const
0101 # define BOOST_CLBL_TRTS_ABOMINABLE_VOLATILE volatile
0102 #endif
0103
0104 #ifdef BOOST_CLBL_TRTS_ENABLE_NOEXCEPT_TYPES
0105 # define BOOST_CLBL_TRTS_NOEXCEPT_SPECIFIER noexcept
0106 #else
0107 # define BOOST_CLBL_TRTS_NOEXCEPT_SPECIFIER BOOST_CLBL_TRTS_EMPTY
0108 #endif
0109
0110 #endif