__config revision 243572
1227825Stheraven// -*- C++ -*- 2227825Stheraven//===--------------------------- __config ---------------------------------===// 3227825Stheraven// 4227825Stheraven// The LLVM Compiler Infrastructure 5227825Stheraven// 6227825Stheraven// This file is dual licensed under the MIT and the University of Illinois Open 7227825Stheraven// Source Licenses. See LICENSE.TXT for details. 8227825Stheraven// 9227825Stheraven//===----------------------------------------------------------------------===// 10227825Stheraven 11227825Stheraven#ifndef _LIBCPP_CONFIG 12227825Stheraven#define _LIBCPP_CONFIG 13227825Stheraven 14227825Stheraven#if !_MSC_VER // explicit macro necessary because it is only defined below in this file 15227825Stheraven#pragma GCC system_header 16227825Stheraven#endif 17227825Stheraven 18241903Sdim#ifdef __GNUC__ 19241903Sdim#define _GNUC_VER (__GNUC__ * 100 + __GNUC_MINOR__) 20241903Sdim#endif 21227825Stheraven 22241903Sdim#define _LIBCPP_VERSION 1101 23241903Sdim 24227825Stheraven#define _LIBCPP_ABI_VERSION 1 25227825Stheraven 26227825Stheraven#define _LIBCPP_CONCAT1(_LIBCPP_X,_LIBCPP_Y) _LIBCPP_X##_LIBCPP_Y 27227825Stheraven#define _LIBCPP_CONCAT(_LIBCPP_X,_LIBCPP_Y) _LIBCPP_CONCAT1(_LIBCPP_X,_LIBCPP_Y) 28227825Stheraven 29227825Stheraven#define _LIBCPP_NAMESPACE _LIBCPP_CONCAT(__,_LIBCPP_ABI_VERSION) 30227825Stheraven 31227825Stheraven#ifdef __LITTLE_ENDIAN__ 32227825Stheraven#if __LITTLE_ENDIAN__ 33227825Stheraven#define _LIBCPP_LITTLE_ENDIAN 1 34227825Stheraven#define _LIBCPP_BIG_ENDIAN 0 35227825Stheraven#endif // __LITTLE_ENDIAN__ 36227825Stheraven#endif // __LITTLE_ENDIAN__ 37227825Stheraven 38227825Stheraven#ifdef __BIG_ENDIAN__ 39227825Stheraven#if __BIG_ENDIAN__ 40227825Stheraven#define _LIBCPP_LITTLE_ENDIAN 0 41227825Stheraven#define _LIBCPP_BIG_ENDIAN 1 42227825Stheraven#endif // __BIG_ENDIAN__ 43227825Stheraven#endif // __BIG_ENDIAN__ 44227825Stheraven 45227825Stheraven#ifdef __FreeBSD__ 46227825Stheraven# include <sys/endian.h> 47227825Stheraven# if _BYTE_ORDER == _LITTLE_ENDIAN 48227825Stheraven# define _LIBCPP_LITTLE_ENDIAN 1 49227825Stheraven# define _LIBCPP_BIG_ENDIAN 0 50227825Stheraven# else // _BYTE_ORDER == _LITTLE_ENDIAN 51227825Stheraven# define _LIBCPP_LITTLE_ENDIAN 0 52227825Stheraven# define _LIBCPP_BIG_ENDIAN 1 53227825Stheraven# endif // _BYTE_ORDER == _LITTLE_ENDIAN 54243572Sdim# ifndef __LONG_LONG_SUPPORTED 55243572Sdim# define _LIBCPP_HAS_NO_LONG_LONG 56243572Sdim# endif // __LONG_LONG_SUPPORTED 57227825Stheraven#endif // __FreeBSD__ 58227825Stheraven 59227825Stheraven#ifdef _WIN32 60227825Stheraven# define _LIBCPP_LITTLE_ENDIAN 1 61227825Stheraven# define _LIBCPP_BIG_ENDIAN 0 62227825Stheraven// Compiler intrinsics (GCC or MSVC) 63241903Sdim# if (defined(_MSC_VER) && _MSC_VER >= 1400) \ 64241903Sdim || (defined(__GNUC__) && _GNUC_VER > 403) 65227825Stheraven# define _LIBCP_HAS_IS_BASE_OF 66227825Stheraven# endif 67227825Stheraven#endif // _WIN32 68227825Stheraven 69232950Stheraven#ifdef __sun__ 70232950Stheraven# include <sys/isa_defs.h> 71232950Stheraven# ifdef _LITTLE_ENDIAN 72232950Stheraven# define _LIBCPP_LITTLE_ENDIAN 1 73232950Stheraven# define _LIBCPP_BIG_ENDIAN 0 74232950Stheraven# else 75232950Stheraven# define _LIBCPP_LITTLE_ENDIAN 0 76232950Stheraven# define _LIBCPP_BIG_ENDIAN 1 77232950Stheraven# endif 78232950Stheraven#endif // __sun__ 79232950Stheraven 80227825Stheraven#if !defined(_LIBCPP_LITTLE_ENDIAN) || !defined(_LIBCPP_BIG_ENDIAN) 81227825Stheraven# include <endian.h> 82227825Stheraven# if __BYTE_ORDER == __LITTLE_ENDIAN 83227825Stheraven# define _LIBCPP_LITTLE_ENDIAN 1 84227825Stheraven# define _LIBCPP_BIG_ENDIAN 0 85227825Stheraven# elif __BYTE_ORDER == __BIG_ENDIAN 86227825Stheraven# define _LIBCPP_LITTLE_ENDIAN 0 87227825Stheraven# define _LIBCPP_BIG_ENDIAN 1 88227825Stheraven# else // __BYTE_ORDER == __BIG_ENDIAN 89227825Stheraven# error unable to determine endian 90227825Stheraven# endif 91227825Stheraven#endif // !defined(_LIBCPP_LITTLE_ENDIAN) || !defined(_LIBCPP_BIG_ENDIAN) 92227825Stheraven 93227825Stheraven#if _WIN32 94227825Stheraven 95227825Stheraven// only really useful for a DLL 96227825Stheraven#ifdef _LIBCPP_DLL // this should be a compiler builtin define ideally... 97227825Stheraven# ifdef cxx_EXPORTS 98227825Stheraven# define _LIBCPP_HIDDEN 99227825Stheraven# define _LIBCPP_VISIBLE __declspec(dllexport) 100227825Stheraven# else 101227825Stheraven# define _LIBCPP_HIDDEN 102227825Stheraven# define _LIBCPP_VISIBLE __declspec(dllimport) 103227825Stheraven# endif 104227825Stheraven#else 105227825Stheraven# define _LIBCPP_HIDDEN 106227825Stheraven# define _LIBCPP_VISIBLE 107227825Stheraven#endif 108227825Stheraven 109227825Stheraven#ifndef _LIBCPP_INLINE_VISIBILITY 110227825Stheraven# if _MSC_VER 111227825Stheraven# define _LIBCPP_INLINE_VISIBILITY __forceinline 112227825Stheraven# else // MinGW GCC and Clang 113227825Stheraven# define _LIBCPP_INLINE_VISIBILITY __attribute__ ((__always_inline__)) 114227825Stheraven# endif 115227825Stheraven#endif 116227825Stheraven 117227825Stheraven#ifndef _LIBCPP_EXCEPTION_ABI 118227825Stheraven#define _LIBCPP_EXCEPTION_ABI _LIBCPP_VISIBLE 119227825Stheraven#endif 120227825Stheraven 121227825Stheraven#ifndef _LIBCPP_ALWAYS_INLINE 122227825Stheraven# if _MSC_VER 123227825Stheraven# define _LIBCPP_ALWAYS_INLINE __forceinline 124227825Stheraven# endif 125227825Stheraven#endif 126227825Stheraven 127227825Stheraven#endif // _WIN32 128227825Stheraven 129227825Stheraven#ifndef _LIBCPP_HIDDEN 130227825Stheraven#define _LIBCPP_HIDDEN __attribute__ ((__visibility__("hidden"))) 131227825Stheraven#endif 132227825Stheraven 133227825Stheraven#ifndef _LIBCPP_VISIBLE 134227825Stheraven#define _LIBCPP_VISIBLE __attribute__ ((__visibility__("default"))) 135227825Stheraven#endif 136227825Stheraven 137227825Stheraven#ifndef _LIBCPP_INLINE_VISIBILITY 138227825Stheraven#define _LIBCPP_INLINE_VISIBILITY __attribute__ ((__visibility__("hidden"), __always_inline__)) 139227825Stheraven#endif 140227825Stheraven 141227825Stheraven#ifndef _LIBCPP_EXCEPTION_ABI 142227825Stheraven#define _LIBCPP_EXCEPTION_ABI __attribute__ ((__visibility__("default"))) 143227825Stheraven#endif 144227825Stheraven 145227825Stheraven#ifndef _LIBCPP_CANTTHROW 146227825Stheraven#define _LIBCPP_CANTTHROW __attribute__ ((__nothrow__)) 147227825Stheraven#endif 148227825Stheraven 149227825Stheraven#ifndef _LIBCPP_ALWAYS_INLINE 150227825Stheraven#define _LIBCPP_ALWAYS_INLINE __attribute__ ((__visibility__("hidden"), __always_inline__)) 151227825Stheraven#endif 152227825Stheraven 153227825Stheraven#if defined(__clang__) 154227825Stheraven 155227825Stheraven#if __has_feature(cxx_alignas) 156241903Sdim# define _ALIGNAS_TYPE(x) alignas(x) 157227825Stheraven# define _ALIGNAS(x) alignas(x) 158227825Stheraven#else 159241903Sdim# define _ALIGNAS_TYPE(x) __attribute__((__aligned__(__alignof(x)))) 160227825Stheraven# define _ALIGNAS(x) __attribute__((__aligned__(x))) 161227825Stheraven#endif 162227825Stheraven 163227825Stheraven#if !__has_feature(cxx_alias_templates) 164227825Stheraven#define _LIBCPP_HAS_NO_TEMPLATE_ALIASES 165227825Stheraven#endif 166227825Stheraven 167227825Stheraven#ifndef __GXX_EXPERIMENTAL_CXX0X__ 168227825Stheraven#ifdef __linux__ 169227825Stheraven#define _LIBCPP_HAS_NO_UNICODE_CHARS 170227825Stheraven#else 171227825Stheraventypedef __char16_t char16_t; 172227825Stheraventypedef __char32_t char32_t; 173227825Stheraven#endif 174227825Stheraven#endif 175227825Stheraven 176227825Stheraven#if !(__has_feature(cxx_exceptions)) 177227825Stheraven#define _LIBCPP_NO_EXCEPTIONS 178227825Stheraven#endif 179227825Stheraven 180227825Stheraven#if !(__has_feature(cxx_rtti)) 181227825Stheraven#define _LIBCPP_NO_RTTI 182227825Stheraven#endif 183227825Stheraven 184232950Stheraven#if !(__has_feature(cxx_strong_enums)) 185232950Stheraven#define _LIBCPP_HAS_NO_STRONG_ENUMS 186232950Stheraven#endif 187232950Stheraven 188227825Stheraven#if !(__has_feature(cxx_decltype)) 189227825Stheraven#define _LIBCPP_HAS_NO_DECLTYPE 190227825Stheraven#endif 191227825Stheraven 192227825Stheraven#if __has_feature(cxx_attributes) 193241903Sdim# define _LIBCPP_NORETURN [[noreturn]] 194227825Stheraven#else 195241903Sdim# define _LIBCPP_NORETURN __attribute__ ((noreturn)) 196227825Stheraven#endif 197227825Stheraven 198227825Stheraven#define _LIBCPP_HAS_NO_DEFAULTED_FUNCTIONS 199227825Stheraven 200227825Stheraven#if !(__has_feature(cxx_deleted_functions)) 201227825Stheraven#define _LIBCPP_HAS_NO_DELETED_FUNCTIONS 202227825Stheraven#endif // !(__has_feature(cxx_deleted_functions)) 203227825Stheraven 204227825Stheraven#if !(__has_feature(cxx_lambdas)) 205227825Stheraven#define _LIBCPP_HAS_NO_LAMBDAS 206227825Stheraven#endif 207227825Stheraven 208227825Stheraven#if !(__has_feature(cxx_nullptr)) 209227825Stheraven#define _LIBCPP_HAS_NO_NULLPTR 210227825Stheraven#endif 211227825Stheraven 212227825Stheraven#if !(__has_feature(cxx_rvalue_references)) 213227825Stheraven#define _LIBCPP_HAS_NO_RVALUE_REFERENCES 214227825Stheraven#endif 215227825Stheraven 216227825Stheraven#if !(__has_feature(cxx_static_assert)) 217227825Stheraven#define _LIBCPP_HAS_NO_STATIC_ASSERT 218227825Stheraven#endif 219227825Stheraven 220227825Stheraven#if !(__has_feature(cxx_auto_type)) 221227825Stheraven#define _LIBCPP_HAS_NO_AUTO_TYPE 222227825Stheraven#endif 223227825Stheraven 224227825Stheraven#if !(__has_feature(cxx_access_control_sfinae)) || !__has_feature(cxx_trailing_return) 225227825Stheraven#define _LIBCPP_HAS_NO_ADVANCED_SFINAE 226227825Stheraven#endif 227227825Stheraven 228227825Stheraven#if !(__has_feature(cxx_variadic_templates)) 229227825Stheraven#define _LIBCPP_HAS_NO_VARIADICS 230227825Stheraven#endif 231227825Stheraven 232227825Stheraven#if !(__has_feature(cxx_trailing_return)) 233227825Stheraven#define _LIBCPP_HAS_NO_TRAILING_RETURN 234227825Stheraven#endif 235227825Stheraven 236227825Stheraven#if !(__has_feature(cxx_generalized_initializers)) 237227825Stheraven#define _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS 238227825Stheraven#endif 239227825Stheraven 240227825Stheraven#if __has_feature(is_base_of) 241227825Stheraven# define _LIBCP_HAS_IS_BASE_OF 242227825Stheraven#endif 243227825Stheraven 244227825Stheraven// Objective-C++ features (opt-in) 245227825Stheraven#if __has_feature(objc_arc) 246227825Stheraven#define _LIBCPP_HAS_OBJC_ARC 247227825Stheraven#endif 248227825Stheraven 249227825Stheraven#if __has_feature(objc_arc_weak) 250227825Stheraven#define _LIBCPP_HAS_OBJC_ARC_WEAK 251232950Stheraven#define _LIBCPP_HAS_NO_STRONG_ENUMS 252227825Stheraven#endif 253227825Stheraven 254227825Stheraven#if !(__has_feature(cxx_constexpr)) 255227825Stheraven#define _LIBCPP_HAS_NO_CONSTEXPR 256227825Stheraven#endif 257227825Stheraven 258241903Sdim#if __FreeBSD__ && (__ISO_C_VISIBLE >= 2011 || __cplusplus >= 201103L) 259232972Stheraven#define _LIBCPP_HAS_QUICK_EXIT 260241903Sdim#define _LIBCPP_HAS_C11_FEATURES 261232972Stheraven#endif 262232972Stheraven 263227825Stheraven#if (__has_feature(cxx_noexcept)) 264227825Stheraven# define _NOEXCEPT noexcept 265227825Stheraven# define _NOEXCEPT_(x) noexcept(x) 266227825Stheraven#else 267227825Stheraven# define _NOEXCEPT throw() 268227825Stheraven# define _NOEXCEPT_(x) 269227825Stheraven#endif 270227825Stheraven 271227825Stheraven#if __has_feature(underlying_type) 272227825Stheraven# define _LIBCXX_UNDERLYING_TYPE(T) __underlying_type(T) 273227825Stheraven#endif 274227825Stheraven 275227825Stheraven// Inline namespaces are available in Clang regardless of C++ dialect. 276227825Stheraven#define _LIBCPP_BEGIN_NAMESPACE_STD namespace std {inline namespace _LIBCPP_NAMESPACE { 277227825Stheraven#define _LIBCPP_END_NAMESPACE_STD } } 278227825Stheraven#define _VSTD std::_LIBCPP_NAMESPACE 279227825Stheraven 280227825Stheravennamespace std { 281227825Stheraven inline namespace _LIBCPP_NAMESPACE { 282227825Stheraven } 283227825Stheraven} 284227825Stheraven 285227825Stheraven#elif defined(__GNUC__) 286227825Stheraven 287227825Stheraven#define _ALIGNAS(x) __attribute__((__aligned__(x))) 288241903Sdim#define _ALIGNAS_TYPE(x) __attribute__((__aligned__(__alignof(x)))) 289227825Stheraven 290241903Sdim#define _LIBCPP_NORETURN __attribute__((noreturn)) 291227825Stheraven 292227825Stheraven#if !__EXCEPTIONS 293227825Stheraven#define _LIBCPP_NO_EXCEPTIONS 294227825Stheraven#endif 295227825Stheraven 296227825Stheraven#define _LIBCPP_HAS_NO_TEMPLATE_ALIASES 297227825Stheraven#define _LIBCPP_HAS_NO_CONSTEXPR 298227825Stheraven 299227825Stheraven#define _NOEXCEPT throw() 300227825Stheraven#define _NOEXCEPT_(x) 301227825Stheraven 302227825Stheraven#ifndef __GXX_EXPERIMENTAL_CXX0X__ 303227825Stheraven 304227825Stheraven#define _LIBCPP_HAS_NO_ADVANCED_SFINAE 305227825Stheraven#define _LIBCPP_HAS_NO_DECLTYPE 306227825Stheraven#define _LIBCPP_HAS_NO_DEFAULTED_FUNCTIONS 307227825Stheraven#define _LIBCPP_HAS_NO_DELETED_FUNCTIONS 308227825Stheraven#define _LIBCPP_HAS_NO_NULLPTR 309227825Stheraven#define _LIBCPP_HAS_NO_STATIC_ASSERT 310227825Stheraven#define _LIBCPP_HAS_NO_UNICODE_CHARS 311227825Stheraven#define _LIBCPP_HAS_NO_VARIADICS 312227825Stheraven#define _LIBCPP_HAS_NO_RVALUE_REFERENCES 313227825Stheraven#define _LIBCPP_HAS_NO_ALWAYS_INLINE_VARIADICS 314227825Stheraven 315227825Stheraven#else // __GXX_EXPERIMENTAL_CXX0X__ 316227825Stheraven 317227825Stheraven#define _LIBCPP_HAS_NO_TRAILING_RETURN 318227825Stheraven#define _LIBCPP_HAS_NO_ALWAYS_INLINE_VARIADICS 319227825Stheraven 320241903Sdim#if _GNUC_VER < 403 321227825Stheraven#define _LIBCPP_HAS_NO_RVALUE_REFERENCES 322227825Stheraven#endif 323227825Stheraven 324241903Sdim#if _GNUC_VER < 403 325227825Stheraven#define _LIBCPP_HAS_NO_STATIC_ASSERT 326227825Stheraven#endif 327227825Stheraven 328241903Sdim#if _GNUC_VER < 404 329227825Stheraven#define _LIBCPP_HAS_NO_ADVANCED_SFINAE 330227825Stheraven#define _LIBCPP_HAS_NO_DECLTYPE 331227825Stheraven#define _LIBCPP_HAS_NO_DEFAULTED_FUNCTIONS 332227825Stheraven#define _LIBCPP_HAS_NO_DELETED_FUNCTIONS 333227825Stheraven#define _LIBCPP_HAS_NO_UNICODE_CHARS 334227825Stheraven#define _LIBCPP_HAS_NO_VARIADICS 335227825Stheraven#define _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS 336241903Sdim#endif // _GNUC_VER < 404 337227825Stheraven 338241903Sdim#if _GNUC_VER < 406 339227825Stheraven#define _LIBCPP_HAS_NO_NULLPTR 340227825Stheraven#endif 341227825Stheraven 342227825Stheraven#endif // __GXX_EXPERIMENTAL_CXX0X__ 343227825Stheraven 344227825Stheraven#define _LIBCPP_BEGIN_NAMESPACE_STD namespace std { namespace _LIBCPP_NAMESPACE { 345227825Stheraven#define _LIBCPP_END_NAMESPACE_STD } } 346227825Stheraven#define _VSTD std::_LIBCPP_NAMESPACE 347227825Stheraven 348227825Stheravennamespace std { 349227825Stheravennamespace _LIBCPP_NAMESPACE { 350227825Stheraven} 351227825Stheravenusing namespace _LIBCPP_NAMESPACE __attribute__((__strong__)); 352227825Stheraven} 353227825Stheraven 354227825Stheraven#elif defined(_MSC_VER) 355227825Stheraven 356227825Stheraven#define _LIBCPP_HAS_NO_TEMPLATE_ALIASES 357227825Stheraven#define _LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER 358227825Stheraven#define _LIBCPP_HAS_NO_CONSTEXPR 359227825Stheraven#define _LIBCPP_HAS_NO_UNICODE_CHARS 360227825Stheraven#define _LIBCPP_HAS_NO_DELETED_FUNCTIONS 361227825Stheraven#define __alignof__ __alignof 362241903Sdim#define _LIBCPP_NORETURN __declspec(noreturn) 363227825Stheraven#define _ALIGNAS(x) __declspec(align(x)) 364227825Stheraven#define _LIBCPP_HAS_NO_VARIADICS 365227825Stheraven 366227825Stheraven#define _NOEXCEPT throw() 367227825Stheraven#define _NOEXCEPT_(x) 368227825Stheraven 369227825Stheraven#define _LIBCPP_BEGIN_NAMESPACE_STD namespace std { 370227825Stheraven#define _LIBCPP_END_NAMESPACE_STD } 371227825Stheraven#define _VSTD std 372227825Stheraven 373227825Stheravennamespace std { 374227825Stheraven} 375227825Stheraven 376227825Stheraven#endif // __clang__ || __GNUC___ || _MSC_VER 377227825Stheraven 378227825Stheraven#ifdef _LIBCPP_HAS_NO_UNICODE_CHARS 379227825Stheraventypedef unsigned short char16_t; 380227825Stheraventypedef unsigned int char32_t; 381227825Stheraven#endif // _LIBCPP_HAS_NO_UNICODE_CHARS 382227825Stheraven 383227825Stheraven#ifdef _LIBCPP_HAS_NO_STATIC_ASSERT 384227825Stheraven 385227825Stheraventemplate <bool> struct __static_assert_test; 386227825Stheraventemplate <> struct __static_assert_test<true> {}; 387227825Stheraventemplate <unsigned> struct __static_assert_check {}; 388227825Stheraven#define static_assert(__b, __m) \ 389227825Stheraven typedef __static_assert_check<sizeof(__static_assert_test<(__b)>)> \ 390227825Stheraven _LIBCPP_CONCAT(__t, __LINE__) 391227825Stheraven 392227825Stheraven#endif // _LIBCPP_HAS_NO_STATIC_ASSERT 393227825Stheraven 394227825Stheraven#ifdef _LIBCPP_HAS_NO_DECLTYPE 395227825Stheraven#define decltype(x) __typeof__(x) 396227825Stheraven#endif 397227825Stheraven 398227825Stheraven#ifdef _LIBCPP_HAS_NO_CONSTEXPR 399234976Stheraven#define _LIBCPP_CONSTEXPR 400234976Stheraven#else 401234976Stheraven#define _LIBCPP_CONSTEXPR constexpr 402227825Stheraven#endif 403227825Stheraven 404241903Sdim#ifdef __GNUC__ 405241903Sdim#define _NOALIAS __attribute__((malloc)) 406241903Sdim#else 407241903Sdim#define _NOALIAS 408241903Sdim#endif 409241903Sdim 410227825Stheraven#ifndef __has_feature 411227825Stheraven#define __has_feature(__x) 0 412227825Stheraven#endif 413227825Stheraven 414232950Stheraven#if __has_feature(cxx_explicit_conversions) 415232950Stheraven# define _LIBCPP_EXPLICIT explicit 416232950Stheraven#else 417232950Stheraven# define _LIBCPP_EXPLICIT 418232950Stheraven#endif 419232950Stheraven 420232950Stheraven#ifdef _LIBCPP_HAS_NO_STRONG_ENUMS 421242945Stheraven#define _LIBCPP_DECLARE_STRONG_ENUM(x) struct _LIBCPP_VISIBLE x { enum __lx 422232950Stheraven#define _LIBCPP_DECLARE_STRONG_ENUM_EPILOG(x) \ 423242945Stheraven __lx __v_; \ 424242945Stheraven _LIBCPP_ALWAYS_INLINE x(__lx __v) : __v_(__v) {} \ 425242945Stheraven _LIBCPP_ALWAYS_INLINE explicit x(int __v) : __v_(static_cast<__lx>(__v)) {} \ 426232950Stheraven _LIBCPP_ALWAYS_INLINE operator int() const {return __v_;} \ 427232950Stheraven }; 428232950Stheraven#else // _LIBCPP_HAS_NO_STRONG_ENUMS 429232950Stheraven#define _LIBCPP_DECLARE_STRONG_ENUM(x) enum class _LIBCPP_VISIBLE x 430232950Stheraven#define _LIBCPP_DECLARE_STRONG_ENUM_EPILOG(x) 431232950Stheraven#endif // _LIBCPP_HAS_NO_STRONG_ENUMS 432232950Stheraven 433242945Stheraven#ifndef _LIBCPP_EXTERN_TEMPLATE 434242945Stheraven#define _LIBCPP_EXTERN_TEMPLATE(...) extern template __VA_ARGS__; 435242945Stheraven#endif 436242945Stheraven 437232950Stheraven#if __APPLE__ || __FreeBSD__ || _WIN32 || __sun__ 438227825Stheraven#define _LIBCPP_LOCALE__L_EXTENSIONS 1 439227825Stheraven#endif 440227825Stheraven#if __FreeBSD__ 441227825Stheraven#define _DECLARE_C99_LDBL_MATH 1 442227825Stheraven#endif 443227825Stheraven 444227825Stheraven#if __APPLE__ || __FreeBSD__ 445227825Stheraven#define _LIBCPP_HAS_DEFAULTRUNELOCALE 446227825Stheraven#endif 447227825Stheraven 448232950Stheraven#if __APPLE__ || __FreeBSD__ || __sun__ 449227825Stheraven#define _LIBCPP_WCTYPE_IS_MASK 450227825Stheraven#endif 451227825Stheraven 452227825Stheraven#ifdef _LIBCPP_DEBUG2 453227825Stheraven# if _LIBCPP_DEBUG2 == 0 454227825Stheraven# define _LIBCPP_DEBUG_LEVEL 1 455227825Stheraven# elif _LIBCPP_DEBUG2 == 1 456227825Stheraven# define _LIBCPP_DEBUG_LEVEL 2 457227825Stheraven# else 458227825Stheraven# error Supported values for _LIBCPP_DEBUG2 are 0 and 1 459227825Stheraven# endif 460227825Stheraven#endif 461227825Stheraven 462227825Stheraven#ifdef _LIBCPP_DEBUG2 463227825Stheraven# include <__debug> 464227825Stheraven#else 465227825Stheraven# define _LIBCPP_ASSERT(x, m) ((void)0) 466227825Stheraven#endif 467227825Stheraven 468227825Stheraven#endif // _LIBCPP_CONFIG 469