00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #pragma once
00018
00019 #ifdef __cplusplus
00020
00021 #ifdef __clang__
00022
00023
00024 #if __has_include(<ciso646>)
00025 #include <ciso646>
00026 #if defined(_LIBCPP_VERSION)
00027 #define AI_LIBCPP 1 // libc++
00028 #endif
00029 #endif
00030
00031 #if !AI_LIBCPP
00032 #define AI_LIBSTDCXX 1 // libstdc++
00033 #endif
00034
00035 #if AI_LIBCPP && __has_feature(cxx_nullptr)
00036 #define AI_HAS_NULLPTR
00037 #endif
00038
00039 #if __has_feature(cxx_static_assert)
00040 #define AI_HAS_STATIC_ASSERT
00041 #endif
00042
00043 #if AI_LIBCPP && __has_feature(cxx_rvalue_references)
00044 #define AI_HAS_RVALUE_REFERENCES
00045 #endif
00046
00047 #if __has_feature(cxx_lambdas)
00048 #define AI_HAS_LAMBDAS
00049 #endif
00050
00051 #if __has_feature(cxx_defaulted_functions)
00052 #define AI_HAS_DEFAULTED_FUNCTIONS
00053 #endif
00054
00055 #if __has_feature(cxx_deleted_functions)
00056 #define AI_HAS_DELETED_FUNCTIONS
00057 #endif
00058
00059 #if __has_feature(cxx_explicit_conversions)
00060 #define AI_HAS_EXPLICIT_CONVERSION_OPERATORS
00061 #endif
00062
00063 #if __has_feature(cxx_noexcept)
00064 #define AI_HAS_NOEXCEPT
00065 #endif
00066
00067 #if __has_feature(cxx_return_type_deduction)
00068 #define AI_HAS_RETURN_TYPE_DEDUCTION
00069 #endif
00070
00071 #endif // __clang__
00072
00073 #endif // __cplusplus