1 /* 2 * Copyright 2014 Google Inc. All rights reserved. 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 #ifndef FRUIT_CONFIG_BASE_H 18 #define FRUIT_CONFIG_BASE_H 19 20 // Needed for all Clang versions (as of January 2016), not needed for GCC. 21 // This can also be defined for GCC, but it slightly slows down compile time of code using Fruit. 22 #define FRUIT_HAS_CLANG_ARBITRARY_OVERLOAD_RESOLUTION_BUG 1 23 24 // Whether the compiler defines std::max_align_t. 25 #define FRUIT_HAS_STD_MAX_ALIGN_T 1 26 27 // Whether the compiler defines ::max_align_t. 28 // Ignored if FRUIT_HAS_STD_MAX_ALIGN_T is set. 29 #define FRUIT_HAS_MAX_ALIGN_T 1 30 31 // Whether the compiler defines std::is_trivially_copyable. 32 #define FRUIT_HAS_STD_IS_TRIVIALLY_COPYABLE 1 33 34 // Whether the compiler defines __has_trivial_copy. 35 // Ignored if FRUIT_HAS_STD_IS_TRIVIALLY_COPYABLE is set. 36 #define FRUIT_HAS_HAS_TRIVIAL_COPY 1 37 38 // Whether the compiler defines __is_trivially_copyable. 39 // Ignored if FRUIT_HAS_STD_IS_TRIVIALLY_COPYABLE is set. 40 #define FRUIT_HAS_IS_TRIVIALLY_COPYABLE 1 41 42 // Whether the compiler defines std::is_trivially_copy_constructible. 43 #define FRUIT_HAS_STD_IS_TRIVIALLY_COPY_CONSTRUCTIBLE 1 44 45 // Whether typeid() is available. Typically, it is unless RTTI is disabled. 46 #define FRUIT_HAS_TYPEID 1 47 48 // Whether typeid() is constexpr. Typically, it is except in MSVC. 49 #define FRUIT_HAS_CONSTEXPR_TYPEID 1 50 51 // Whether abi::__cxa_demangle() is available after including cxxabi.h. 52 #define FRUIT_HAS_CXA_DEMANGLE 1 53 54 #define FRUIT_USES_BOOST 1 55 56 #define FRUIT_HAS_ALWAYS_INLINE_ATTRIBUTE 1 57 58 #define FRUIT_HAS_FORCEINLINE 0 59 60 #define FRUIT_HAS_ATTRIBUTE_DEPRECATED 0 61 62 #define FRUIT_HAS_GCC_ATTRIBUTE_DEPRECATED 1 63 64 #define FRUIT_HAS_DECLSPEC_DEPRECATED 0 65 66 #define FRUIT_HAS_MSVC_ASSUME 0 67 68 #define FRUIT_HAS_BUILTIN_UNREACHABLE 1 69 70 #endif // FRUIT_CONFIG_BASE_H 71