231 if (
major != other.major)
232 return major > other.major;
233 if (
minor != other.minor)
234 return minor > other.minor;
235 return patch >= other.patch;
253 if (
major != other.major)
254 return major < other.major;
255 if (
minor != other.minor)
256 return minor < other.minor;
257 return patch < other.patch;
275 return major == other.major &&
minor == other.minor &&
patch == other.patch;
292 return !(*
this == other);
301 return !(*
this < other) && !(*
this == other);
310 return (*
this < other) || (*
this == other);
325 #if defined(__INTEL_COMPILER) || defined(__ICL) || defined(__ICC)
326 #if defined(__clang__)
332 #elif defined(__clang__)
335 #elif defined(__GNUC__)
336 #if defined(__MINGW32__) || defined(__MINGW64__)
342 #elif defined(_MSC_VER)
358 #if defined(__INTEL_COMPILER)
361 __INTEL_COMPILER / 100, (__INTEL_COMPILER % 100) / 10, __INTEL_COMPILER % 10);
362 #elif defined(__clang__)
363 return CompilerVersion(__clang_major__, __clang_minor__, __clang_patchlevel__);
364 #elif defined(__GNUC__)
365 #if defined(__GNUC_PATCHLEVEL__)
370 #elif defined(_MSC_VER)
374 #elif _MSC_VER >= 1930
376 #elif _MSC_VER >= 1920
378 #elif _MSC_VER >= 1910
380 #elif _MSC_VER >= 1900
383 return CompilerVersion(_MSC_VER / 100, (_MSC_VER % 100) / 10, _MSC_VER % 10);
407 return "intel_classic";
534 #if defined(__INTEL_COMPILER) || defined(__ICL) || defined(__ICC)
535 #define TRLC_COMPILER_GCC 0
536 #elif defined(__clang__)
537 #define TRLC_COMPILER_GCC 0
538 #elif defined(__GNUC__)
539 #if defined(__MINGW32__) || defined(__MINGW64__)
540 #define TRLC_COMPILER_GCC 0
542 #define TRLC_COMPILER_GCC 1
545 #define TRLC_COMPILER_GCC 0
551 #if defined(__INTEL_COMPILER) || defined(__ICL) || defined(__ICC)
552 #if defined(__clang__)
553 #define TRLC_COMPILER_CLANG 0
555 #define TRLC_COMPILER_CLANG 0
557 #elif defined(__clang__)
558 #define TRLC_COMPILER_CLANG 1
560 #define TRLC_COMPILER_CLANG 0
566 #if defined(_MSC_VER) && !defined(__clang__) && !defined(__INTEL_COMPILER)
567 #define TRLC_COMPILER_MSVC 1
569 #define TRLC_COMPILER_MSVC 0
575 #if defined(__INTEL_COMPILER) && !defined(__clang__)
576 #define TRLC_COMPILER_INTEL 1
578 #define TRLC_COMPILER_INTEL 0
584 #if (defined(__INTEL_COMPILER) || defined(__ICL) || defined(__ICC)) && defined(__clang__)
585 #define TRLC_COMPILER_INTEL_LLVM 1
587 #define TRLC_COMPILER_INTEL_LLVM 0
593 #if defined(__GNUC__) && (defined(__MINGW32__) || defined(__MINGW64__))
594 #define TRLC_COMPILER_MINGW 1
596 #define TRLC_COMPILER_MINGW 0
602 #if defined(__INTEL_COMPILER)
603 #define TRLC_COMPILER_VERSION_MAJOR (__INTEL_COMPILER / 100)
604 #define TRLC_COMPILER_VERSION_MINOR ((__INTEL_COMPILER % 100) / 10)
605 #define TRLC_COMPILER_VERSION_PATCH (__INTEL_COMPILER % 10)
606 #elif defined(__clang__)
607 #define TRLC_COMPILER_VERSION_MAJOR __clang_major__
608 #define TRLC_COMPILER_VERSION_MINOR __clang_minor__
609 #define TRLC_COMPILER_VERSION_PATCH __clang_patchlevel__
610 #elif defined(__GNUC__)
611 #define TRLC_COMPILER_VERSION_MAJOR __GNUC__
612 #define TRLC_COMPILER_VERSION_MINOR __GNUC_MINOR__
613 #ifdef __GNUC_PATCHLEVEL__
614 #define TRLC_COMPILER_VERSION_PATCH __GNUC_PATCHLEVEL__
616 #define TRLC_COMPILER_VERSION_PATCH 0
618 #elif defined(_MSC_VER)
620 #define TRLC_COMPILER_VERSION_MAJOR 19
621 #define TRLC_COMPILER_VERSION_MINOR 4
622 #define TRLC_COMPILER_VERSION_PATCH (_MSC_VER - 1940)
623 #elif _MSC_VER >= 1930
624 #define TRLC_COMPILER_VERSION_MAJOR 19
625 #define TRLC_COMPILER_VERSION_MINOR 3
626 #define TRLC_COMPILER_VERSION_PATCH (_MSC_VER - 1930)
627 #elif _MSC_VER >= 1920
628 #define TRLC_COMPILER_VERSION_MAJOR 19
629 #define TRLC_COMPILER_VERSION_MINOR 2
630 #define TRLC_COMPILER_VERSION_PATCH (_MSC_VER - 1920)
631 #elif _MSC_VER >= 1910
632 #define TRLC_COMPILER_VERSION_MAJOR 19
633 #define TRLC_COMPILER_VERSION_MINOR 1
634 #define TRLC_COMPILER_VERSION_PATCH (_MSC_VER - 1910)
635 #elif _MSC_VER >= 1900
636 #define TRLC_COMPILER_VERSION_MAJOR 19
637 #define TRLC_COMPILER_VERSION_MINOR 0
638 #define TRLC_COMPILER_VERSION_PATCH (_MSC_VER - 1900)
640 #define TRLC_COMPILER_VERSION_MAJOR (_MSC_VER / 100)
641 #define TRLC_COMPILER_VERSION_MINOR ((_MSC_VER % 100) / 10)
642 #define TRLC_COMPILER_VERSION_PATCH (_MSC_VER % 10)
645 #define TRLC_COMPILER_VERSION_MAJOR 0
646 #define TRLC_COMPILER_VERSION_MINOR 0
647 #define TRLC_COMPILER_VERSION_PATCH 0
656 #define TRLC_COMPILER_VERSION_ATLEAST(major, minor, patch) \
657 ((TRLC_COMPILER_VERSION_MAJOR > (major)) || \
658 (TRLC_COMPILER_VERSION_MAJOR == (major) && TRLC_COMPILER_VERSION_MINOR > (minor)) || \
659 (TRLC_COMPILER_VERSION_MAJOR == (major) && TRLC_COMPILER_VERSION_MINOR == (minor) && \
660 TRLC_COMPILER_VERSION_PATCH >= (patch)))
665 #define TRLC_COMPILER_VERSION (trlc::platform::getCompilerVersion())
670 #define TRLC_COMPILER_NAME (trlc::platform::getCompilerName())