122 lines
2.6 KiB
C++
122 lines
2.6 KiB
C++
// (C) Copyright Douglas Gregor 2010
|
|
//
|
|
// Use, modification and distribution are subject to the
|
|
// Boost Software License, Version 1.0. (See accompanying file
|
|
// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
|
|
|
// See http://www.boost.org for most recent version.
|
|
|
|
// Clang compiler setup.
|
|
|
|
#if __has_feature(cxx_exceptions) && !defined(BOOST_NO_EXCEPTIONS)
|
|
#else
|
|
# define BOOST_NO_EXCEPTIONS
|
|
#endif
|
|
|
|
#if !__has_feature(cxx_rtti)
|
|
# define BOOST_NO_RTTI
|
|
#endif
|
|
|
|
#if defined(__int64)
|
|
# define BOOST_HAS_MS_INT64
|
|
#endif
|
|
|
|
#define BOOST_HAS_NRVO
|
|
|
|
// Clang supports "long long" in all compilation modes.
|
|
|
|
#if !__has_feature(cxx_auto_type)
|
|
# define BOOST_NO_AUTO_DECLARATIONS
|
|
# define BOOST_NO_AUTO_MULTIDECLARATIONS
|
|
#endif
|
|
|
|
#if !(defined(__GXX_EXPERIMENTAL_CXX0X__) || __cplusplus >= 201103L)
|
|
# define BOOST_NO_CHAR16_T
|
|
# define BOOST_NO_CHAR32_T
|
|
#endif
|
|
|
|
#if !__has_feature(cxx_constexpr)
|
|
# define BOOST_NO_CONSTEXPR
|
|
#endif
|
|
|
|
#if !__has_feature(cxx_decltype)
|
|
# define BOOST_NO_DECLTYPE
|
|
#endif
|
|
|
|
#define BOOST_NO_DECLTYPE_N3276
|
|
|
|
#if !__has_feature(cxx_defaulted_functions)
|
|
# define BOOST_NO_DEFAULTED_FUNCTIONS
|
|
#endif
|
|
|
|
#if !__has_feature(cxx_deleted_functions)
|
|
# define BOOST_NO_DELETED_FUNCTIONS
|
|
#endif
|
|
|
|
#if !__has_feature(cxx_explicit_conversions)
|
|
# define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS
|
|
#endif
|
|
|
|
#if !__has_feature(cxx_default_function_template_args)
|
|
# define BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS
|
|
#endif
|
|
|
|
#if !__has_feature(cxx_generalized_initializers)
|
|
# define BOOST_NO_INITIALIZER_LISTS
|
|
#endif
|
|
|
|
#if !__has_feature(cxx_lambdas)
|
|
# define BOOST_NO_LAMBDAS
|
|
#endif
|
|
|
|
#if !__has_feature(cxx_noexcept)
|
|
# define BOOST_NO_NOEXCEPT
|
|
#endif
|
|
|
|
#if !__has_feature(cxx_nullptr)
|
|
# define BOOST_NO_NULLPTR
|
|
#endif
|
|
|
|
#if !__has_feature(cxx_raw_string_literals)
|
|
# define BOOST_NO_RAW_LITERALS
|
|
#endif
|
|
|
|
#if !__has_feature(cxx_generalized_initializers)
|
|
# define BOOST_NO_UNIFIED_INITIALIZATION_SYNTAX
|
|
#endif
|
|
|
|
#if !__has_feature(cxx_rvalue_references)
|
|
# define BOOST_NO_RVALUE_REFERENCES
|
|
#endif
|
|
|
|
#if !__has_feature(cxx_strong_enums)
|
|
# define BOOST_NO_SCOPED_ENUMS
|
|
#endif
|
|
|
|
#if !__has_feature(cxx_static_assert)
|
|
# define BOOST_NO_STATIC_ASSERT
|
|
#endif
|
|
|
|
#if !__has_feature(cxx_alias_templates)
|
|
# define BOOST_NO_TEMPLATE_ALIASES
|
|
#endif
|
|
|
|
#if !__has_feature(cxx_unicode_literals)
|
|
# define BOOST_NO_UNICODE_LITERALS
|
|
#endif
|
|
|
|
#if !__has_feature(cxx_variadic_templates)
|
|
# define BOOST_NO_VARIADIC_TEMPLATES
|
|
#endif
|
|
|
|
// Clang always supports variadic macros
|
|
// Clang always supports extern templates
|
|
|
|
#ifndef BOOST_COMPILER
|
|
# define BOOST_COMPILER "Clang version " __clang_version__
|
|
#endif
|
|
|
|
// Macro used to identify the Clang compiler.
|
|
#define BOOST_CLANG 1
|
|
|