]> git.lyx.org Git - features.git/blob - boost/boost/config/compiler/clang.hpp
Update boost to version 1.49.0
[features.git] / boost / boost / config / compiler / clang.hpp
1 // (C) Copyright Douglas Gregor 2010
2 //
3 //  Use, modification and distribution are subject to the 
4 //  Boost Software License, Version 1.0. (See accompanying file 
5 //  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
6
7 //  See http://www.boost.org for most recent version.
8
9 // Clang compiler setup.
10
11 #if __has_feature(cxx_exceptions) && !defined(BOOST_NO_EXCEPTIONS)
12 #else
13 #  define BOOST_NO_EXCEPTIONS
14 #endif
15
16 #if !__has_feature(cxx_rtti)
17 #  define BOOST_NO_RTTI
18 #endif
19
20 #if defined(__int64)
21 #  define BOOST_HAS_MS_INT64
22 #endif
23
24 #define BOOST_HAS_NRVO
25
26 // Clang supports "long long" in all compilation modes.
27
28 #if !__has_feature(cxx_auto_type)
29 #  define BOOST_NO_AUTO_DECLARATIONS
30 #  define BOOST_NO_AUTO_MULTIDECLARATIONS
31 #endif
32
33 #if !(defined(__GXX_EXPERIMENTAL_CXX0X__) || __cplusplus >= 201103L)
34 #  define BOOST_NO_CHAR16_T
35 #  define BOOST_NO_CHAR32_T
36 #endif
37
38 #if !__has_feature(cxx_constexpr)
39 #  define BOOST_NO_CONSTEXPR
40 #endif
41
42 #if !__has_feature(cxx_decltype)
43 #  define BOOST_NO_DECLTYPE
44 #endif
45
46 #define BOOST_NO_DECLTYPE_N3276
47
48 #if !__has_feature(cxx_defaulted_functions)
49 #  define BOOST_NO_DEFAULTED_FUNCTIONS
50 #endif
51
52 #if !__has_feature(cxx_deleted_functions)
53 #  define BOOST_NO_DELETED_FUNCTIONS
54 #endif
55
56 #if !__has_feature(cxx_explicit_conversions)
57 #  define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS
58 #endif
59
60 #if !__has_feature(cxx_default_function_template_args)
61 #  define BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS
62 #endif
63
64 #if !__has_feature(cxx_generalized_initializers)
65 #  define BOOST_NO_INITIALIZER_LISTS
66 #endif
67
68 #if !__has_feature(cxx_lambdas)
69 #  define BOOST_NO_LAMBDAS
70 #endif
71
72 #if !__has_feature(cxx_noexcept)
73 #  define BOOST_NO_NOEXCEPT
74 #endif
75
76 #if !__has_feature(cxx_nullptr)
77 #  define BOOST_NO_NULLPTR
78 #endif
79
80 #if !__has_feature(cxx_raw_string_literals)
81 #  define BOOST_NO_RAW_LITERALS
82 #endif
83
84 #if !__has_feature(cxx_generalized_initializers)
85 #  define BOOST_NO_UNIFIED_INITIALIZATION_SYNTAX
86 #endif
87
88 #if !__has_feature(cxx_rvalue_references)
89 #  define BOOST_NO_RVALUE_REFERENCES
90 #endif
91
92 #if !__has_feature(cxx_strong_enums)
93 #  define BOOST_NO_SCOPED_ENUMS
94 #endif
95
96 #if !__has_feature(cxx_static_assert)
97 #  define BOOST_NO_STATIC_ASSERT
98 #endif
99
100 #if !__has_feature(cxx_alias_templates)
101 #  define BOOST_NO_TEMPLATE_ALIASES
102 #endif
103
104 #if !__has_feature(cxx_unicode_literals)
105 #  define BOOST_NO_UNICODE_LITERALS
106 #endif
107
108 #if !__has_feature(cxx_variadic_templates)
109 #  define BOOST_NO_VARIADIC_TEMPLATES
110 #endif
111
112 // Clang always supports variadic macros
113 // Clang always supports extern templates
114
115 #ifndef BOOST_COMPILER
116 #  define BOOST_COMPILER "Clang version " __clang_version__
117 #endif
118
119 // Macro used to identify the Clang compiler.
120 #define BOOST_CLANG 1
121