summaryrefslogtreecommitdiff
path: root/boost/callable_traits/detail/config.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'boost/callable_traits/detail/config.hpp')
-rw-r--r--boost/callable_traits/detail/config.hpp109
1 files changed, 109 insertions, 0 deletions
diff --git a/boost/callable_traits/detail/config.hpp b/boost/callable_traits/detail/config.hpp
new file mode 100644
index 0000000000..946458187d
--- /dev/null
+++ b/boost/callable_traits/detail/config.hpp
@@ -0,0 +1,109 @@
+/*
+@Copyright Barrett Adair 2016-2017
+
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
+
+*/
+
+#ifndef BOOST_CLBL_TRTS_DETAIL_CONFIG_HPP
+#define BOOST_CLBL_TRTS_DETAIL_CONFIG_HPP
+
+#include <type_traits>
+#include <tuple>
+#include <utility>
+#include <cstdint>
+
+#define BOOST_CLBL_TRTS_EMPTY_
+#define BOOST_CLBL_TRTS_EMPTY BOOST_CLBL_TRTS_EMPTY_
+
+#ifdef __cpp_transactional_memory
+# define BOOST_CLBL_TRTS_ENABLE_TRANSACTION_SAFE
+#endif
+
+#ifdef __cpp_inline_variables
+# define BOOST_CLBL_TRAITS_INLINE_VAR inline
+#else
+# define BOOST_CLBL_TRAITS_INLINE_VAR
+#endif
+
+#ifdef __cpp_noexcept_function_type
+# define BOOST_CLBL_TRTS_ENABLE_NOEXCEPT_TYPES
+#endif
+
+#ifdef BOOST_CLBL_TRTS_ENABLE_TRANSACTION_SAFE
+# define BOOST_CLBL_TRTS_TRANSACTION_SAFE_SPECIFIER transaction_safe
+#else
+# define BOOST_CLBL_TRTS_TRANSACTION_SAFE_SPECIFIER
+#endif
+
+#ifndef __clang__
+# if defined(__GNUC__)
+# define BOOST_CLBL_TRTS_GCC
+# if __GNUC__ >= 6
+# define BOOST_CLBL_TRTS_GCC_AT_LEAST_6_0_0
+# endif
+# if __GNUC__ < 5
+# define BOOST_CLBL_TRTS_GCC_OLDER_THAN_5_0_0
+# endif
+# if __GNUC__ >= 5
+# define BOOST_CLBL_TRTS_GCC_AT_LEAST_4_9_2
+# elif __GNUC__ == 4 && __GNUC_MINOR__ == 9 && __GNUC_PATCHLEVEL__ >= 2
+# define BOOST_CLBL_TRTS_GCC_AT_LEAST_4_9_2
+# else
+# define BOOST_CLBL_TRTS_GCC_OLDER_THAN_4_9_2
+# endif //#if __GNUC__ >= 5
+# endif //#if defined __GNUC__
+#endif // #ifndef __clang__
+
+#ifdef _MSC_VER
+# ifdef __clang__
+# define BOOST_CLBL_TRTS_CLANG_C2
+# else
+# define BOOST_CLBL_TRTS_MSVC
+# endif // #ifdef __clang__
+#endif // #ifdef _MSC_VER
+
+#define BOOST_CLBL_TRTS_IX_SEQ(...) ::std::index_sequence< __VA_ARGS__ >
+#define BOOST_CLBL_TRTS_MAKE_IX_SEQ(...) ::std::make_index_sequence< __VA_ARGS__ >
+#define BOOST_CLBL_TRTS_DISJUNCTION(...) ::std::disjunction< __VA_ARGS__ >
+
+#ifndef __cpp_variable_templates
+# define BOOST_CLBL_TRTS_DISABLE_VARIABLE_TEMPLATES
+#endif
+
+#ifndef __cpp_lib_logical_traits
+# include <boost/callable_traits/detail/polyfills/disjunction.hpp>
+#endif //__cpp_lib_logical_traits
+
+#ifndef __cpp_lib_integer_sequence
+# include <boost/callable_traits/detail/polyfills/make_index_sequence.hpp>
+#endif // __cpp_lib_integer_sequence
+
+#if defined(BOOST_CLBL_TRTS_MSVC) && !defined(BOOST_DISABLE_WIN32)
+# define BOOST_CLBL_TRTS_DEFAULT_VARARGS_CC __cdecl
+# define BOOST_CLBL_TRTS_PMF_VARGARGS_CDECL_DEFAULT
+#else
+# define BOOST_CLBL_TRTS_DEFAULT_VARARGS_CC
+#endif // #if defined(BOOST_CLBL_TRTS_MSVC) && !defined(BOOST_DISABLE_WIN32))
+
+#if (defined(BOOST_CLBL_TRTS_GCC) && !defined(BOOST_CLBL_TRTS_GCC_AT_LEAST_4_9_2)) || defined(__INTEL_COMPILER)
+# define BOOST_CLBL_TRTS_DISABLE_REFERENCE_QUALIFIERS
+# define BOOST_CLBL_TRTS_DISABLE_ABOMINABLE_FUNCTIONS
+#endif // #if defined BOOST_CLBL_TRTS_GCC && !defined(BOOST_CLBL_TRTS_GCC_AT_LEAST_4_9_2)
+
+#ifdef BOOST_CLBL_TRTS_DISABLE_ABOMINABLE_FUNCTIONS
+# define BOOST_CLBL_TRTS_ABOMINABLE_CONST BOOST_CLBL_TRTS_EMPTY
+# define BOOST_CLBL_TRTS_ABOMINABLE_VOLATILE BOOST_CLBL_TRTS_EMPTY
+#else
+# define BOOST_CLBL_TRTS_ABOMINABLE_CONST const
+# define BOOST_CLBL_TRTS_ABOMINABLE_VOLATILE volatile
+#endif // #ifdef BOOST_CLBL_TRTS_DISABLE_ABOMINABLE_FUNCTIONS
+
+#ifdef BOOST_CLBL_TRTS_ENABLE_NOEXCEPT_TYPES
+# define BOOST_CLBL_TRTS_NOEXCEPT_SPECIFIER noexcept
+#else
+# define BOOST_CLBL_TRTS_NOEXCEPT_SPECIFIER BOOST_CLBL_TRTS_EMPTY
+#endif // #ifdef BOOST_CLBL_TRTS_ENABLE_NOEXCEPT_TYPES
+
+#endif // #ifndef BOOST_CLBL_TRTS_DETAIL_CONFIG_HPP