190 #ifndef INCLUDED_eacompiler_H
191 #define INCLUDED_eacompiler_H
193 #include <EABase/config/eaplatform.h>
196 #ifndef INTERNAL_STRINGIZE
197 #define INTERNAL_STRINGIZE(x) INTERNAL_PRIMITIVE_STRINGIZE(x)
199 #ifndef INTERNAL_PRIMITIVE_STRINGIZE
200 #define INTERNAL_PRIMITIVE_STRINGIZE(x) #x
204 #ifndef EA_COMPILER_HAS_FEATURE
205 #if defined(__clang__)
206 #define EA_COMPILER_HAS_FEATURE(x) __has_feature(x)
208 #define EA_COMPILER_HAS_FEATURE(x) 0
214 #ifndef EA_COMPILER_HAS_BUILTIN
215 #if defined(__clang__)
216 #define EA_COMPILER_HAS_BUILTIN(x) __has_builtin(x)
218 #define EA_COMPILER_HAS_BUILTIN(x) 0
224 #if defined(__EDG_VERSION__)
225 #define EA_COMPILER_EDG 1
227 #if defined(_MSC_VER)
228 #define EA_COMPILER_EDG_VC_MODE 1
230 #if defined(__GNUC__)
231 #define EA_COMPILER_EDG_GCC_MODE 1
241 #if !defined(EA_COMPILER_WINRTCX_ENABLED) && defined(__cplusplus_winrt)
242 #define EA_COMPILER_WINRTCX_ENABLED 1
257 #if !defined(EA_COMPILER_CPP11_ENABLED) && defined(__cplusplus)
258 #if (__cplusplus >= 201103L)
259 #define EA_COMPILER_CPP11_ENABLED 1
260 #elif defined(__GNUC__) && defined(__GXX_EXPERIMENTAL_CXX0X__)
261 #define EA_COMPILER_CPP11_ENABLED 1
262 #elif defined(_MSC_VER) && _MSC_VER >= 1600
263 #define EA_COMPILER_CPP11_ENABLED 1
264 #elif defined(__EDG_VERSION__)
279 #if !defined(EA_COMPILER_CPP14_ENABLED) && defined(__cplusplus)
280 #if (__cplusplus >= 201402L)
281 #define EA_COMPILER_CPP14_ENABLED 1
282 #elif defined(_MSC_VER) && (_MSC_VER >= 1900)
283 #define EA_COMPILER_CPP14_ENABLED 1
297 #if !defined(EA_COMPILER_CPP17_ENABLED) && defined(__cplusplus)
298 #if (__cplusplus >= 201703L)
299 #define EA_COMPILER_CPP17_ENABLED 1
300 #elif defined(_MSVC_LANG) && (_MSVC_LANG >= 201703L)
301 #define EA_COMPILER_CPP17_ENABLED 1
315 #if !defined(EA_COMPILER_CPP20_ENABLED) && defined(__cplusplus)
326 #if defined(__ARMCC_VERSION)
332 #define EA_COMPILER_RVCT 1
333 #define EA_COMPILER_ARM 1
334 #define EA_COMPILER_VERSION __ARMCC_VERSION
335 #define EA_COMPILER_NAME "RVCT"
339 #elif defined(__clang__) && !defined(_MSC_VER)
340 #define EA_COMPILER_CLANG 1
341 #define EA_COMPILER_VERSION (__clang_major__ * 100 + __clang_minor__)
342 #define EA_COMPILER_NAME "clang"
343 #define EA_COMPILER_STRING EA_COMPILER_NAME __clang_version__
346 #elif defined(__GNUC__)
347 #define EA_COMPILER_GNUC 1
348 #define EA_COMPILER_VERSION (__GNUC__ * 1000 + __GNUC_MINOR__)
349 #define EA_COMPILER_NAME "GCC"
350 #define EA_COMPILER_STRING EA_COMPILER_NAME " compiler, version " INTERNAL_STRINGIZE( __GNUC__ ) "." INTERNAL_STRINGIZE( __GNUC_MINOR__ )
352 #if (__GNUC__ == 2) && (__GNUC_MINOR__ < 95)
353 #define EA_COMPILER_NO_MEMBER_TEMPLATES 1
355 #if (__GNUC__ == 2) && (__GNUC_MINOR__ <= 97)
356 #define EA_COMPILER_NO_MEMBER_TEMPLATE_FRIENDS 1
358 #if (__GNUC__ == 3) && ((__GNUC_MINOR__ == 1) || (__GNUC_MINOR__ == 2))
359 #define EA_COMPILER_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS 1
363 #elif defined(__BORLANDC__)
364 #define EA_COMPILER_BORLANDC 1
365 #define EA_COMPILER_VERSION __BORLANDC__
366 #define EA_COMPILER_NAME "Borland C"
369 #if (__BORLANDC__ <= 0x0550)
370 #define EA_COMPILER_NO_MEMBER_TEMPLATE_FRIENDS 1
372 #if (__BORLANDC__ >= 0x561) && (__BORLANDC__ < 0x600)
373 #define EA_COMPILER_NO_MEMBER_FUNCTION_SPECIALIZATION 1
380 #elif defined(__ICL) || defined(__ICC)
381 #define EA_COMPILER_INTEL 1
386 #if defined(_MSC_VER)
387 #define EA_COMPILER_MSVC 1
388 #define EA_COMPILER_MICROSOFT 1
393 #if defined(__GNUC__)
394 #define EA_COMPILER_GNUC 1
398 #define EA_COMPILER_VERSION __ICL
400 #define EA_COMPILER_VERSION __ICC
402 #define EA_COMPILER_NAME "Intel C++"
403 #if defined(_MSC_VER)
404 #define EA_COMPILER_STRING EA_COMPILER_NAME " compiler, version " INTERNAL_STRINGIZE( EA_COMPILER_VERSION ) ", EDG version " INTERNAL_STRINGIZE( __EDG_VERSION__ ) ", VC++ version " INTERNAL_STRINGIZE( _MSC_VER )
405 #elif defined(__GNUC__)
406 #define EA_COMPILER_STRING EA_COMPILER_NAME " compiler, version " INTERNAL_STRINGIZE( EA_COMPILER_VERSION ) ", EDG version " INTERNAL_STRINGIZE( __EDG_VERSION__ ) ", GCC version " INTERNAL_STRINGIZE( __GNUC__ )
408 #define EA_COMPILER_STRING EA_COMPILER_NAME " compiler, version " INTERNAL_STRINGIZE( EA_COMPILER_VERSION ) ", EDG version " INTERNAL_STRINGIZE( __EDG_VERSION__ )
412 #elif defined(_MSC_VER)
413 #define EA_COMPILER_MSVC 1
414 #define EA_COMPILER_MICROSOFT 1
415 #define EA_COMPILER_VERSION _MSC_VER
416 #define EA_COMPILER_NAME "Microsoft Visual C++"
419 #if defined(__clang__)
421 #define EA_COMPILER_CLANG_CL 1
424 #define EA_STANDARD_LIBRARY_MSVC 1
425 #define EA_STANDARD_LIBRARY_MICROSOFT 1
427 #if (_MSC_VER <= 1200)
428 #if (_MSC_VER < 1200)
429 #define EA_COMPILER_MSVCOLD 1
431 #define EA_COMPILER_MSVC6 1
434 #if (_MSC_VER < 1200)
435 #define EA_COMPILER_NO_TEMPLATE_SPECIALIZATION 1
437 #define EA_COMPILER_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS 1
438 #define EA_COMPILER_NO_VOID_RETURNS 1
439 #define EA_COMPILER_NO_EXCEPTION_STD_NAMESPACE 1
440 #define EA_COMPILER_NO_DEDUCED_TYPENAME 1
441 #define EA_COMPILER_NO_STATIC_CONSTANTS 1
442 #define EA_COMPILER_NO_COVARIANT_RETURN_TYPE 1
443 #define EA_COMPILER_NO_ARGUMENT_DEPENDENT_LOOKUP 1
444 #define EA_COMPILER_NO_TEMPLATE_TEMPLATES 1
445 #define EA_COMPILER_NO_TEMPLATE_PARTIAL_SPECIALIZATION 1
446 #define EA_COMPILER_NO_MEMBER_TEMPLATE_FRIENDS 1
450 #elif (_MSC_VER <= 1300)
451 #define EA_COMPILER_MSVC7 1
453 #define EA_COMPILER_NO_COVARIANT_RETURN_TYPE 1
454 #define EA_COMPILER_NO_ARGUMENT_DEPENDENT_LOOKUP 1
455 #define EA_COMPILER_NO_TEMPLATE_TEMPLATES 1
456 #define EA_COMPILER_NO_TEMPLATE_PARTIAL_SPECIALIZATION 1
457 #define EA_COMPILER_NO_MEMBER_TEMPLATE_FRIENDS 1
458 #define EA_COMPILER_NO_MEMBER_FUNCTION_SPECIALIZATION 1
461 #elif (_MSC_VER < 1400)
464 #define EA_COMPILER_MSVC7_2003 1
465 #define EA_COMPILER_MSVC7_1 1
467 #elif (_MSC_VER < 1500)
468 #define EA_COMPILER_MSVC8_2005 1
469 #define EA_COMPILER_MSVC8_0 1
471 #elif (_MSC_VER < 1600)
472 #define EA_COMPILER_MSVC9_2008 1
473 #define EA_COMPILER_MSVC9_0 1
475 #elif (_MSC_VER < 1700)
476 #define EA_COMPILER_MSVC_2010 1
477 #define EA_COMPILER_MSVC10_0 1
479 #elif (_MSC_VER < 1800)
480 #define EA_COMPILER_MSVC_2011 1
481 #define EA_COMPILER_MSVC11_0 1
482 #define EA_COMPILER_MSVC_2012 1
483 #define EA_COMPILER_MSVC12_0 1
485 #elif (_MSC_VER < 1900)
486 #define EA_COMPILER_MSVC_2013 1
487 #define EA_COMPILER_MSVC13_0 1
489 #elif (_MSC_VER < 1910)
490 #define EA_COMPILER_MSVC_2015 1
491 #define EA_COMPILER_MSVC14_0 1
493 #elif (_MSC_VER < 1911)
494 #define EA_COMPILER_MSVC_2017 1
495 #define EA_COMPILER_MSVC15_0 1
501 #elif defined(__xlC__)
502 #define EA_COMPILER_IBM 1
503 #define EA_COMPILER_NAME "IBM XL C"
504 #define EA_COMPILER_VERSION __xlC__
505 #define EA_COMPILER_STRING "IBM XL C compiler, version " INTERNAL_STRINGIZE( __xlC__ )
510 #define EA_COMPILER_VERSION 0
511 #define EA_COMPILER_NAME "Unknown"
515 #ifndef EA_COMPILER_STRING
516 #define EA_COMPILER_STRING EA_COMPILER_NAME " compiler, version " INTERNAL_STRINGIZE(EA_COMPILER_VERSION)
522 #ifndef EA_COMPILER_NO_TEMPLATE_PARTIAL_SPECIALIZATION
523 #define EA_COMPILER_PARTIAL_TEMPLATE_SPECIALIZATION 1
525 #ifndef EA_COMPILER_NO_TEMPLATE_SPECIALIZATION
526 #define EA_COMPILER_TEMPLATE_SPECIALIZATION 1
528 #ifndef EA_COMPILER_NO_MEMBER_TEMPLATES
529 #define EA_COMPILER_MEMBER_TEMPLATES 1
531 #ifndef EA_COMPILER_NO_MEMBER_TEMPLATE_SPECIALIZATION
532 #define EA_COMPILER_MEMBER_TEMPLATE_SPECIALIZATION 1
553 #ifndef EA_COMPILER_VA_COPY_REQUIRED
554 #if ((defined(__GNUC__) && (__GNUC__ >= 3)) || defined(__clang__)) && (!defined(__i386__) || defined(__x86_64__)) && !defined(__ppc__) && !defined(__PPC__) && !defined(__PPC64__)
555 #define EA_COMPILER_VA_COPY_REQUIRED 1
565 #if defined(__EDG_VERSION__) && !defined(__RTTI)
566 #define EA_COMPILER_NO_RTTI 1
567 #elif defined(__clang__) && !EA_COMPILER_HAS_FEATURE(cxx_rtti)
568 #define EA_COMPILER_NO_RTTI 1
569 #elif defined(__IBMCPP__) && !defined(__RTTI_ALL__)
570 #define EA_COMPILER_NO_RTTI 1
571 #elif defined(__GXX_ABI_VERSION) && !defined(__GXX_RTTI)
572 #define EA_COMPILER_NO_RTTI 1
573 #elif defined(_MSC_VER) && !defined(_CPPRTTI)
574 #define EA_COMPILER_NO_RTTI 1
575 #elif defined(__ARMCC_VERSION) && defined(__TARGET_CPU_MPCORE) && !defined(__RTTI)
576 #define EA_COMPILER_NO_RTTI 1
595 #if !defined(EA_COMPILER_NO_EXCEPTIONS) && !defined(EA_COMPILER_NO_UNWIND)
596 #if defined(EA_COMPILER_GNUC) && defined(_NO_EX)
597 #define EA_COMPILER_NO_EXCEPTIONS 1
599 #elif (defined(EA_COMPILER_CLANG) || defined(EA_COMPILER_GNUC) || defined(EA_COMPILER_INTEL) || defined(EA_COMPILER_RVCT)) && !defined(__EXCEPTIONS)
600 #define EA_COMPILER_NO_EXCEPTIONS 1
602 #elif (defined(EA_COMPILER_MSVC)) && !defined(_CPPUNWIND)
603 #define EA_COMPILER_NO_UNWIND 1
620 #ifndef EA_DISABLE_ALL_VC_WARNINGS
621 #if defined(_MSC_VER)
622 #define EA_DISABLE_ALL_VC_WARNINGS() \
623 __pragma(warning(push, 0)) \
624 __pragma(warning(disable: 4244 4265 4267 4350 4472 4509 4548 4623 4710 4985 6320 4755 4625 4626 4702))
626 #define EA_DISABLE_ALL_VC_WARNINGS()
631 #ifndef EA_RESTORE_ALL_VC_WARNINGS
632 #if defined(_MSC_VER)
633 #define EA_RESTORE_ALL_VC_WARNINGS() \
634 __pragma(warning(pop))
636 #define EA_RESTORE_ALL_VC_WARNINGS()
642 #if !defined(EA_HAVE_DINKUMWARE_CPP_LIBRARY) && !defined(EA_NO_HAVE_DINKUMWARE_CPP_LIBRARY)
643 #if defined(__cplusplus)
644 EA_DISABLE_ALL_VC_WARNINGS()
646 EA_RESTORE_ALL_VC_WARNINGS()
649 #if defined(__cplusplus) && defined(_CPPLIB_VER)
650 #define EA_HAVE_DINKUMWARE_CPP_LIBRARY 1
652 #define EA_NO_HAVE_DINKUMWARE_CPP_LIBRARY 1
660 #if !defined(EA_COMPILER_NO_ALIGNED_NEW)
661 #if defined(_HAS_ALIGNED_NEW) && _HAS_ALIGNED_NEW
663 #elif defined(EA_COMPILER_CPP17_ENABLED)
666 #define EA_COMPILER_NO_ALIGNED_NEW 1
688 #if defined(EA_HAVE_DINKUMWARE_CPP_LIBRARY)
689 #if defined(_MSC_VER) && (_MSC_VER >= 1912)
690 #define EA_THROW_SPEC_NEW(x) noexcept(false)
691 #define EA_THROW_SPEC_NEW_NONE() noexcept
692 #define EA_THROW_SPEC_DELETE_NONE() noexcept
694 #elif defined(_MSC_VER) && (_MSC_VER >= 1910)
695 #define EA_THROW_SPEC_NEW(x) throw(x)
696 #define EA_THROW_SPEC_NEW_NONE() throw()
697 #define EA_THROW_SPEC_DELETE_NONE() throw()
700 #if defined(EA_PLATFORM_SONY)
701 #define EA_THROW_SPEC_NEW(X) _THROWS(X)
702 #elif defined(_MSC_VER)
705 #define EA_THROW_SPEC_NEW(X) __pragma(warning(push)) __pragma(warning(disable: 4987)) _THROWS(X) __pragma(warning(pop))
707 #define EA_THROW_SPEC_NEW(X) _THROW1(X)
709 #define EA_THROW_SPEC_NEW_NONE() _THROW0()
710 #define EA_THROW_SPEC_DELETE_NONE() _THROW0()
713 #elif defined(EA_COMPILER_NO_EXCEPTIONS) && !defined(EA_COMPILER_RVCT) && !defined(EA_PLATFORM_LINUX) && !defined(EA_PLATFORM_APPLE) && !defined(CS_UNDEFINED_STRING)
714 #define EA_COMPILER_NO_NEW_THROW_SPEC 1
716 #define EA_THROW_SPEC_NEW(x)
717 #define EA_THROW_SPEC_NEW_NONE()
718 #define EA_THROW_SPEC_DELETE_NONE()
720 #define EA_THROW_SPEC_NEW(x) throw(x)
721 #define EA_THROW_SPEC_NEW_NONE() throw()
722 #define EA_THROW_SPEC_DELETE_NONE() throw()
730 #if defined(EA_PLATFORM_ANDROID)
737 #define EA_COMPILER_NO_STANDARD_CPP_LIBRARY 1
770 #if !defined(EA_COMPILER_NO_VARIADIC_MACROS)
771 #if defined(_MSC_VER) && (_MSC_VER < 1500)
772 #define EA_COMPILER_NO_VARIADIC_MACROS 1
773 #elif defined(__GNUC__) && (((__GNUC__ * 100) + __GNUC_MINOR__)) < 401
774 #define EA_COMPILER_NO_VARIADIC_MACROS 1
775 #elif defined(EA_COMPILER_EDG)
787 #if !defined(EA_COMPILER_NO_RVALUE_REFERENCES)
788 #if defined(EA_COMPILER_CPP11_ENABLED) && defined(_MSC_VER) && (_MSC_VER >= 1600)
790 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__EDG_VERSION__) && (__EDG_VERSION__ >= 403)
792 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__clang__) && EA_COMPILER_HAS_FEATURE(cxx_rvalue_references)
794 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__GNUC__) && (EA_COMPILER_VERSION >= 4005)
797 #define EA_COMPILER_NO_RVALUE_REFERENCES 1
808 #if !defined(EA_COMPILER_NO_EXTERN_TEMPLATE)
809 #if defined(EA_COMPILER_CPP11_ENABLED) && defined(_MSC_VER) && (_MSC_VER >= 1700)
811 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__EDG_VERSION__) && (__EDG_VERSION__ >= 401)
813 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__clang__) && defined(__apple_build_version__) && (EA_COMPILER_VERSION >= 401)
815 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__clang__) && !defined(__apple_build_version__)
817 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__GNUC__) && (EA_COMPILER_VERSION >= 4006)
820 #define EA_COMPILER_NO_EXTERN_TEMPLATE 1
837 #if !defined(EA_COMPILER_NO_RANGE_BASED_FOR_LOOP)
838 #if defined(EA_COMPILER_CPP11_ENABLED) && (defined(_MSC_VER) && (EA_COMPILER_VERSION >= 1700))
840 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__EDG_VERSION__) && (__EDG_VERSION__ >= 405)
842 #elif defined(EA_COMPILER_CPP11_ENABLED) && (defined(__clang__) && (EA_COMPILER_VERSION >= 300))
844 #elif defined(EA_COMPILER_CPP11_ENABLED) && (defined(__GNUC__) && (EA_COMPILER_VERSION >= 4006))
847 #define EA_COMPILER_NO_RANGE_BASED_FOR_LOOP 1
856 #if !defined(EA_COMPILER_NO_CONSTEXPR)
857 #if defined(EA_COMPILER_CPP11_ENABLED) && (defined(_MSC_VER) && (EA_COMPILER_VERSION >= 1900))
859 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__EDG_VERSION__) && (__EDG_VERSION__ >= 406)
861 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__clang__) && EA_COMPILER_HAS_FEATURE(cxx_constexpr)
863 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__GNUC__) && (EA_COMPILER_VERSION >= 4006)
865 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(_MSC_VER) && (EA_COMPILER_VERSION >= 1900)
868 #define EA_COMPILER_NO_CONSTEXPR 1
877 #if !defined(EA_COMPILER_NO_CONSTEXPR_IF)
878 #if defined(EA_COMPILER_CPP17_ENABLED) && (defined(_MSC_VER) && (EA_COMPILER_VERSION >= 1911))
880 #elif defined(EA_COMPILER_CPP17_ENABLED) && defined(__clang__) && (EA_COMPILER_VERSION >= 309)
882 #elif defined(EA_COMPILER_CPP17_ENABLED) && defined(__GNUC__) && (EA_COMPILER_VERSION >= 7000)
885 #define EA_COMPILER_NO_CONSTEXPR_IF 1
894 #ifndef EA_COMPILER_NO_OVERRIDE
895 #if defined(EA_COMPILER_CPP11_ENABLED) && defined(_MSC_VER) && (EA_COMPILER_VERSION > 1600)
897 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__clang__) && (EA_COMPILER_VERSION >= 209)
899 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__GNUC__) && (EA_COMPILER_VERSION >= 4007)
902 #define EA_COMPILER_NO_OVERRIDE 1
911 #ifndef EA_COMPILER_NO_INHERITANCE_FINAL
912 #if defined(EA_COMPILER_CPP11_ENABLED) && defined(_MSC_VER) && (EA_COMPILER_VERSION >= 1500)
914 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__clang__) && (EA_COMPILER_VERSION >= 209)
916 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__GNUC__) && (EA_COMPILER_VERSION >= 4007)
919 #define EA_COMPILER_NO_INHERITANCE_FINAL 1
928 #if !defined(EA_COMPILER_NO_AUTO)
929 #if defined(EA_COMPILER_CPP11_ENABLED) && defined(_MSC_VER) && (EA_COMPILER_VERSION >= 1600)
931 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__EDG_VERSION__) && (__EDG_VERSION__ >= 401)
933 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__clang__) && (EA_COMPILER_VERSION >= 209)
935 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__GNUC__) && (EA_COMPILER_VERSION >= 4004)
938 #define EA_COMPILER_NO_AUTO 1
948 #if !defined(EA_COMPILER_NO_NULLPTR)
949 #if (defined(_MSC_VER) && (_MSC_VER >= 1600)) && defined(EA_COMPILER_CPP11_ENABLED)
951 #elif defined(EA_COMPILER_GNUC) && (EA_COMPILER_VERSION >= 4006) && defined(EA_COMPILER_CPP11_ENABLED)
953 #elif defined(__clang__) && defined(EA_COMPILER_CPP11_ENABLED)
955 #elif defined(__EDG_VERSION__) && (__EDG_VERSION__ >= 403) && defined(EA_COMPILER_CPP11_ENABLED)
958 #define EA_COMPILER_NO_NULLPTR 1
967 #if !defined(EA_COMPILER_NO_DECLTYPE)
968 #if defined(EA_COMPILER_CPP11_ENABLED) && defined(_MSC_VER) && (EA_COMPILER_VERSION >= 1600)
970 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__EDG_VERSION__) && (__EDG_VERSION__ >= 401)
972 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__clang__) && (EA_COMPILER_VERSION >= 209)
974 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__GNUC__) && (EA_COMPILER_VERSION >= 4003)
977 #define EA_COMPILER_NO_DECLTYPE 1
988 #if !defined(EA_COMPILER_NO_DEFAULTED_FUNCTIONS)
989 #if defined(EA_COMPILER_CPP11_ENABLED) && defined(_MSC_VER) && (EA_COMPILER_VERSION >= 1800)
991 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__EDG_VERSION__) && (__EDG_VERSION__ >= 401)
993 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__clang__) && (EA_COMPILER_VERSION >= 300)
995 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__GNUC__) && (EA_COMPILER_VERSION >= 4004)
999 #define EA_COMPILER_NO_DEFAULTED_FUNCTIONS 1
1003 #if !defined(EA_COMPILER_NO_DELETED_FUNCTIONS)
1004 #if defined(EA_COMPILER_CPP11_ENABLED) && defined(_MSC_VER) && (EA_COMPILER_VERSION >= 1800)
1006 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__EDG_VERSION__) && (__EDG_VERSION__ >= 401)
1008 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__clang__) && (EA_COMPILER_VERSION >= 209)
1010 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__GNUC__) && (EA_COMPILER_VERSION >= 4004)
1014 #define EA_COMPILER_NO_DELETED_FUNCTIONS 1
1023 #if !defined(EA_COMPILER_NO_LAMBDA_EXPRESSIONS)
1024 #if defined(EA_COMPILER_CPP11_ENABLED) && defined(_MSC_VER) && (EA_COMPILER_VERSION >= 1600)
1026 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__EDG_VERSION__) && (__EDG_VERSION__ >= 401)
1028 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__clang__) && (EA_COMPILER_VERSION >= 401) && defined(__apple_build_version__)
1030 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__clang__) && (EA_COMPILER_VERSION >= 301) && !defined(__apple_build_version__)
1032 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__GNUC__) && (EA_COMPILER_VERSION >= 4004)
1035 #define EA_COMPILER_NO_LAMBDA_EXPRESSIONS 1
1044 #if !defined(EA_COMPILER_NO_TRAILING_RETURN_TYPES)
1045 #if defined(EA_COMPILER_CPP11_ENABLED) && defined(_MSC_VER) && (EA_COMPILER_VERSION >= 1600)
1047 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__EDG_VERSION__) && (__EDG_VERSION__ >= 402)
1049 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__clang__) && (EA_COMPILER_VERSION >= 401) && defined(__apple_build_version__)
1051 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__clang__) && (EA_COMPILER_VERSION >= 301) && !defined(__apple_build_version__)
1053 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__GNUC__) && (EA_COMPILER_VERSION >= 4004)
1056 #define EA_COMPILER_NO_TRAILING_RETURN_TYPES 1
1065 #if !defined(EA_COMPILER_NO_STRONGLY_TYPED_ENUMS)
1066 #if defined(EA_COMPILER_CPP11_ENABLED) && defined(_MSC_VER) && (EA_COMPILER_VERSION >= 1700)
1068 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__EDG_VERSION__) && (__EDG_VERSION__ >= 400)
1070 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__clang__) && (EA_COMPILER_VERSION >= 209)
1072 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__GNUC__) && (EA_COMPILER_VERSION >= 4004)
1075 #define EA_COMPILER_NO_STRONGLY_TYPED_ENUMS 1
1084 #if !defined(EA_COMPILER_NO_FORWARD_DECLARED_ENUMS)
1085 #if defined(EA_COMPILER_CPP11_ENABLED) && defined(_MSC_VER) && (EA_COMPILER_VERSION >= 1700)
1087 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__EDG_VERSION__) && (__EDG_VERSION__ >= 405)
1089 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__clang__) && (EA_COMPILER_VERSION >= 401) && defined(__apple_build_version__)
1091 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__clang__) && (EA_COMPILER_VERSION >= 301) && !defined(__apple_build_version__)
1093 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__GNUC__) && (EA_COMPILER_VERSION >= 4006)
1096 #define EA_COMPILER_NO_FORWARD_DECLARED_ENUMS 1
1105 #if !defined(EA_COMPILER_NO_VARIADIC_TEMPLATES)
1106 #if defined(EA_COMPILER_CPP11_ENABLED) && defined(_MSC_VER) && (EA_COMPILER_VERSION >= 1800)
1108 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(_MSC_VER) && (_MSC_FULL_VER == 170051025)
1110 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__EDG_VERSION__) && (__EDG_VERSION__ >= 403)
1112 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__clang__) && (EA_COMPILER_VERSION >= 209)
1114 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__GNUC__) && (EA_COMPILER_VERSION >= 4004)
1117 #define EA_COMPILER_NO_VARIADIC_TEMPLATES 1
1131 #if !defined(EA_COMPILER_NO_TEMPLATE_ALIASES)
1132 #if defined(EA_COMPILER_CPP11_ENABLED) && defined(_MSC_VER) && (EA_COMPILER_VERSION >= 1800)
1134 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__clang__) && (EA_COMPILER_VERSION >= 401) && defined(__apple_build_version__)
1136 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__EDG_VERSION__) && (__EDG_VERSION__ >= 402)
1138 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__clang__) && (EA_COMPILER_VERSION >= 300) && !defined(__apple_build_version__)
1140 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__GNUC__) && (EA_COMPILER_VERSION >= 4007)
1143 #define EA_COMPILER_NO_TEMPLATE_ALIASES 1
1155 #if !defined(EA_COMPILER_NO_VARIABLE_TEMPLATES)
1156 #if defined(_MSC_VER) && (_MSC_FULL_VER >= 190023918)
1158 #elif defined(EA_COMPILER_CPP14_ENABLED) && defined(__clang__) && (EA_COMPILER_VERSION >= 304) && !defined(__apple_build_version__)
1160 #elif defined(EA_COMPILER_CPP14_ENABLED) && defined(__GNUC__) && (EA_COMPILER_VERSION >= 5000)
1162 #elif !defined(EA_COMPILER_CPP14_ENABLED)
1163 #define EA_COMPILER_NO_VARIABLE_TEMPLATES 1
1181 #if !defined(EA_COMPILER_NO_INLINE_VARIABLES)
1182 #define EA_COMPILER_NO_INLINE_VARIABLES 1
1191 #if !defined(EA_COMPILER_NO_INITIALIZER_LISTS)
1192 #if defined(EA_COMPILER_CPP11_ENABLED) && defined(_MSC_VER) && (EA_COMPILER_VERSION >= 1800)
1194 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(_MSC_VER) && (_MSC_FULL_VER == 170051025)
1196 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__EDG_VERSION__) && (__EDG_VERSION__ >= 405)
1198 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__clang__) && (EA_COMPILER_VERSION >= 401) && defined(__apple_build_version__)
1200 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__clang__) && (EA_COMPILER_VERSION >= 301) && !defined(__apple_build_version__)
1202 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__GNUC__) && (EA_COMPILER_VERSION >= 4004)
1205 #define EA_COMPILER_NO_INITIALIZER_LISTS 1
1216 #if !defined(EA_COMPILER_NO_NORETURN)
1217 #if defined(EA_COMPILER_MSVC) && (EA_COMPILER_VERSION >= 1300)
1219 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__EDG_VERSION__) && (__EDG_VERSION__ >= 402)
1221 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__clang__) && (EA_COMPILER_VERSION >= 401) && defined(__apple_build_version__)
1223 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__clang__) && (EA_COMPILER_VERSION >= 300) && !defined(__apple_build_version__)
1225 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__GNUC__) && (EA_COMPILER_VERSION >= 4008)
1228 #define EA_COMPILER_NO_NORETURN 1
1239 #if !defined(EA_COMPILER_NO_CARRIES_DEPENDENCY)
1240 #if defined(EA_COMPILER_CPP11_ENABLED) && defined(__clang__) && (EA_COMPILER_VERSION >= 401) && defined(__apple_build_version__)
1242 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__EDG_VERSION__) && (__EDG_VERSION__ >= 402)
1244 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__clang__) && (EA_COMPILER_VERSION >= 300) && !defined(__apple_build_version__)
1250 #define EA_COMPILER_NO_CARRIES_DEPENDENCY 1
1260 #if !defined(EA_COMPILER_NO_FALLTHROUGH)
1261 #if defined(EA_COMPILER_CPP17_ENABLED)
1264 #define EA_COMPILER_NO_FALLTHROUGH 1
1274 #if !defined(EA_COMPILER_NO_NODISCARD)
1275 #if defined(EA_COMPILER_CPP17_ENABLED)
1278 #define EA_COMPILER_NO_NODISCARD 1
1288 #if !defined(EA_COMPILER_NO_MAYBE_UNUSED)
1289 #if defined(EA_COMPILER_CPP17_ENABLED)
1291 #elif defined(EA_COMPILER_MSVC) && (EA_COMPILER_VERSION >= 1912)
1294 #define EA_COMPILER_NO_MAYBE_UNUSED 1
1305 #if !defined(EA_COMPILER_NO_STRUCTURED_BINDING)
1306 #if defined(EA_COMPILER_CPP17_ENABLED)
1308 #elif defined(EA_COMPILER_MSVC) && (EA_COMPILER_VERSION >= 1912)
1311 #define EA_COMPILER_NO_STRUCTURED_BINDING 1
1315 #define EA_COMPILER_NO_STRUCTURED_BINDING
1327 #if !defined(EA_COMPILER_NO_DESIGNATED_INITIALIZERS)
1328 #if defined(EA_COMPILER_CPP20_ENABLED)
1331 #define EA_COMPILER_NO_DESIGNATED_INITIALIZERS 1
1341 #if !defined(EA_COMPILER_NO_NONSTATIC_MEMBER_INITIALIZERS)
1342 #if defined(EA_COMPILER_CPP11_ENABLED) && defined(_MSC_VER) && (EA_COMPILER_VERSION >= 1800)
1344 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__clang__) && (EA_COMPILER_VERSION >= 401) && defined(__apple_build_version__)
1346 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__clang__) && (EA_COMPILER_VERSION >= 300) && !defined(__apple_build_version__)
1348 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__GNUC__) && (EA_COMPILER_VERSION >= 4007)
1351 #define EA_COMPILER_NO_NONSTATIC_MEMBER_INITIALIZERS 1
1361 #if !defined(EA_COMPILER_NO_RIGHT_ANGLE_BRACKETS)
1362 #if defined(EA_COMPILER_CPP11_ENABLED) && defined(_MSC_VER) && (EA_COMPILER_VERSION >= 1600)
1364 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__EDG_VERSION__) && (__EDG_VERSION__ >= 401)
1366 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__clang__) && (EA_COMPILER_VERSION >= 209)
1368 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__GNUC__) && (EA_COMPILER_VERSION >= 4003)
1371 #define EA_COMPILER_NO_RIGHT_ANGLE_BRACKETS 1
1381 #if !defined(EA_COMPILER_NO_ALIGNOF)
1383 #if defined(EA_COMPILER_CPP11_ENABLED) && defined(__clang__) && (EA_COMPILER_VERSION >= 209)
1385 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__GNUC__) && (EA_COMPILER_VERSION >= 4005)
1388 #define EA_COMPILER_NO_ALIGNOF 1
1397 #if !defined(EA_COMPILER_NO_ALIGNAS)
1399 #if defined(EA_COMPILER_CPP11_ENABLED) && defined(__clang__) && (EA_COMPILER_VERSION >= 401) && defined(__apple_build_version__)
1401 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__clang__) && (EA_COMPILER_VERSION >= 300) && !defined(__apple_build_version__)
1403 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__GNUC__) && (EA_COMPILER_VERSION >= 4008)
1406 #define EA_COMPILER_NO_ALIGNAS 1
1417 #if !defined(EA_COMPILER_NO_DELEGATING_CONSTRUCTORS)
1418 #if defined(EA_COMPILER_CPP11_ENABLED) && defined(_MSC_VER) && (EA_COMPILER_VERSION >= 1800)
1420 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__EDG_VERSION__) && (__EDG_VERSION__ >= 407)
1422 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__clang__) && (EA_COMPILER_VERSION >= 401) && defined(__apple_build_version__)
1424 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__clang__) && (EA_COMPILER_VERSION >= 300) && !defined(__apple_build_version__)
1426 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__GNUC__) && (EA_COMPILER_VERSION >= 4007)
1429 #define EA_COMPILER_NO_DELEGATING_CONSTRUCTORS 1
1439 #if !defined(EA_COMPILER_NO_INHERITING_CONSTRUCTORS)
1441 #if defined(EA_COMPILER_CPP11_ENABLED) && defined(__clang__) && EA_COMPILER_HAS_FEATURE(cxx_inheriting_constructors)
1443 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__GNUC__) && (EA_COMPILER_VERSION >= 4008)
1446 #define EA_COMPILER_NO_INHERITING_CONSTRUCTORS 1
1456 #if !defined(EA_COMPILER_NO_USER_DEFINED_LITERALS)
1458 #if defined(EA_COMPILER_CPP11_ENABLED) && defined(__clang__) && (EA_COMPILER_VERSION >= 401) && defined(__apple_build_version__)
1460 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__clang__) && (EA_COMPILER_VERSION >= 301) && !defined(__apple_build_version__)
1462 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__GNUC__) && (EA_COMPILER_VERSION >= 4007)
1465 #define EA_COMPILER_NO_USER_DEFINED_LITERALS 1
1474 #if !defined(EA_COMPILER_NO_STANDARD_LAYOUT_TYPES)
1475 #if defined(EA_COMPILER_CPP11_ENABLED) && defined(_MSC_VER) && (EA_COMPILER_VERSION >= 1700)
1477 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__clang__) && (EA_COMPILER_VERSION >= 401) && defined(__apple_build_version__)
1479 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__clang__) && (EA_COMPILER_VERSION >= 300) && !defined(__apple_build_version__)
1481 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__GNUC__) && (EA_COMPILER_VERSION >= 4005)
1484 #define EA_COMPILER_NO_STANDARD_LAYOUT_TYPES 1
1494 #if !defined(EA_COMPILER_NO_EXTENDED_SIZEOF)
1496 #if defined(EA_COMPILER_CPP11_ENABLED) && defined(__clang__) && (EA_COMPILER_VERSION >= 401) && defined(__apple_build_version__)
1499 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__EDG_VERSION__) && (__EDG_VERSION__ >= 405)
1501 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__clang__) && (EA_COMPILER_VERSION >= 301) && !defined(__apple_build_version__)
1503 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__GNUC__) && (EA_COMPILER_VERSION >= 4005)
1506 #define EA_COMPILER_NO_EXTENDED_SIZEOF 1
1516 #if !defined(EA_COMPILER_NO_INLINE_NAMESPACES)
1518 #if defined(EA_COMPILER_CPP11_ENABLED) && defined(__EDG_VERSION__) && (__EDG_VERSION__ >= 405)
1520 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__clang__) && (EA_COMPILER_VERSION >= 209)
1522 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__GNUC__) && (EA_COMPILER_VERSION >= 4004)
1525 #define EA_COMPILER_NO_INLINE_NAMESPACES 1
1534 #if !defined(EA_COMPILER_NO_UNRESTRICTED_UNIONS)
1536 #if defined(EA_COMPILER_CPP11_ENABLED) && defined(__EDG_VERSION__) && (__EDG_VERSION__ >= 406)
1538 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__clang__) && (EA_COMPILER_VERSION >= 401) && defined(__apple_build_version__)
1540 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__clang__) && (EA_COMPILER_VERSION >= 301) && !defined(__apple_build_version__)
1542 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__GNUC__) && (EA_COMPILER_VERSION >= 4006)
1545 #define EA_COMPILER_NO_UNRESTRICTED_UNIONS 1
1554 #if !defined(EA_COMPILER_NO_EXPLICIT_CONVERSION_OPERATORS)
1555 #if defined(EA_COMPILER_CPP11_ENABLED) && defined(_MSC_VER) && (EA_COMPILER_VERSION >= 1800)
1557 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(_MSC_VER) && (_MSC_FULL_VER == 170051025)
1559 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__EDG_VERSION__) && (__EDG_VERSION__ >= 404)
1561 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__clang__) && (EA_COMPILER_VERSION >= 401) && defined(__apple_build_version__)
1563 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__clang__) && (EA_COMPILER_VERSION >= 300) && !defined(__apple_build_version__)
1565 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__GNUC__) && (EA_COMPILER_VERSION >= 4005)
1568 #define EA_COMPILER_NO_EXPLICIT_CONVERSION_OPERATORS 1
1578 #if !defined(EA_COMPILER_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS)
1579 #if defined(EA_COMPILER_CPP11_ENABLED) && defined(_MSC_VER) && (EA_COMPILER_VERSION >= 1800)
1581 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__EDG_VERSION__) && (__EDG_VERSION__ >= 403)
1583 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__clang__) && (EA_COMPILER_VERSION >= 209)
1585 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__GNUC__) && (EA_COMPILER_VERSION >= 4003)
1588 #define EA_COMPILER_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS 1
1598 #if !defined(EA_COMPILER_NO_LOCAL_CLASS_TEMPLATE_PARAMETERS)
1599 #if defined(EA_COMPILER_CPP11_ENABLED) && defined(_MSC_VER) && (EA_COMPILER_VERSION >= 1600)
1601 #if (EA_COMPILER_VERSION < 1700)
1602 #pragma warning(disable: 4836)
1604 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__EDG_VERSION__) && (__EDG_VERSION__ >= 402)
1606 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__clang__) && (EA_COMPILER_VERSION >= 209)
1608 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__GNUC__) && (EA_COMPILER_VERSION >= 4005)
1611 #define EA_COMPILER_NO_LOCAL_CLASS_TEMPLATE_PARAMETERS 1
1622 #if !defined(EA_COMPILER_NO_NOEXCEPT)
1623 #if defined(EA_COMPILER_CPP11_ENABLED) && defined(_MSC_VER) && (EA_COMPILER_VERSION >= 1900)
1625 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__clang__) && (EA_COMPILER_VERSION >= 401) && defined(__apple_build_version__)
1627 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__EDG_VERSION__) && (__EDG_VERSION__ >= 405)
1629 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__clang__) && (EA_COMPILER_VERSION >= 300) && !defined(__apple_build_version__)
1631 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__GNUC__) && (EA_COMPILER_VERSION >= 4006)
1634 #define EA_COMPILER_NO_NOEXCEPT 1
1644 #if !defined(EA_COMPILER_NO_RAW_LITERALS)
1645 #if defined(EA_COMPILER_CPP11_ENABLED) && defined(_MSC_VER) && (EA_COMPILER_VERSION >= 1800)
1647 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__EDG_VERSION__) && (__EDG_VERSION__ >= 407)
1649 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__clang__) && (EA_COMPILER_VERSION >= 401) && defined(__apple_build_version__)
1651 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__clang__) && (EA_COMPILER_VERSION >= 300) && !defined(__apple_build_version__)
1653 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__GNUC__) && (EA_COMPILER_VERSION >= 4005)
1656 #define EA_COMPILER_NO_RAW_LITERALS 1
1665 #if !defined(EA_COMPILER_NO_UNICODE_STRING_LITERALS)
1667 #if defined(EA_COMPILER_CPP11_ENABLED) && defined(__EDG_VERSION__) && (__EDG_VERSION__ >= 407)
1669 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__clang__) && (EA_COMPILER_VERSION >= 401) && defined(__apple_build_version__)
1671 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__clang__) && (EA_COMPILER_VERSION >= 300) && !defined(__apple_build_version__)
1673 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__GNUC__) && (EA_COMPILER_VERSION >= 4004)
1675 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__EDG_VERSION__) && (__EDG_VERSION__ >= 407)
1678 #define EA_COMPILER_NO_UNICODE_STRING_LITERALS 1
1688 #if !defined(EA_COMPILER_NO_NEW_CHARACTER_TYPES)
1689 #if defined(EA_COMPILER_NO_UNICODE_STRING_LITERALS)
1690 #define EA_COMPILER_NO_NEW_CHARACTER_TYPES 1
1700 #if !defined(EA_COMPILER_NO_UNICODE_CHAR_NAME_LITERALS)
1703 #if defined(EA_COMPILER_CPP11_ENABLED) && defined(__clang__) && (EA_COMPILER_VERSION >= 401) && defined(__apple_build_version__)
1705 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__clang__) && (EA_COMPILER_VERSION >= 301) && !defined(__apple_build_version__)
1707 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__GNUC__) && (EA_COMPILER_VERSION >= 4005)
1710 #define EA_COMPILER_NO_UNICODE_CHAR_NAME_LITERALS 1
1719 #if !defined(EA_COMPILER_NO_UNIFIED_INITIALIZATION_SYNTAX)
1720 #if defined(EA_COMPILER_CPP11_ENABLED) && defined(_MSC_VER) && (EA_COMPILER_VERSION >= 1800)
1722 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__clang__) && (EA_COMPILER_VERSION >= 401) && defined(__apple_build_version__)
1724 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__clang__) && (EA_COMPILER_VERSION >= 301) && !defined(__apple_build_version__)
1726 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__GNUC__) && (EA_COMPILER_VERSION >= 4004)
1729 #define EA_COMPILER_NO_UNIFIED_INITIALIZATION_SYNTAX 1
1738 #if !defined(EA_COMPILER_NO_EXTENDED_FRIEND_DECLARATIONS)
1739 #if defined(EA_COMPILER_CPP11_ENABLED) && defined(_MSC_VER) && (EA_COMPILER_VERSION >= 1600)
1741 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__EDG_VERSION__) && (__EDG_VERSION__ >= 401)
1743 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__clang__) && (EA_COMPILER_VERSION >= 209)
1745 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__GNUC__) && (EA_COMPILER_VERSION >= 4007)
1748 #define EA_COMPILER_NO_EXTENDED_FRIEND_DECLARATIONS 1
1762 #if !defined(EA_COMPILER_NO_THREAD_LOCAL)
1763 #if defined(EA_COMPILER_CPP11_ENABLED) && defined(__clang__) && EA_COMPILER_HAS_FEATURE(cxx_thread_local)
1765 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(_MSC_VER) && (EA_COMPILER_VERSION >= 1900)
1767 #elif defined(EA_COMPILER_CPP11_ENABLED) && defined(__GNUC__) && (EA_COMPILER_VERSION >= 4008)
1770 #define EA_COMPILER_NO_THREAD_LOCAL 1