diff options
Diffstat (limited to 'EASTL/test/source/TestVariant2.cpp')
-rw-r--r-- | EASTL/test/source/TestVariant2.cpp | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/EASTL/test/source/TestVariant2.cpp b/EASTL/test/source/TestVariant2.cpp new file mode 100644 index 0000000..e2bd90f --- /dev/null +++ b/EASTL/test/source/TestVariant2.cpp @@ -0,0 +1,82 @@ +/** + * NOTE: + * + * DO NOT INCLUDE EATest/EATest.h or ANY OTHER HEADER + * There is a bug in MSVC whereby pushing/poping all warnings from a header does not reenable all warnings + * in the TU that included the header. + * For example C4805 will not reenabled. + */ + +#include <EASTL/variant.h> + +int TestVariantGeneratingComparisonOverloads() +{ + int nErrorCount = 0; + + { + eastl::variant<int, float, bool> a; + eastl::variant<int, float, bool> b; + + auto r = a == b; + + nErrorCount += !r; + } + + { + eastl::variant<int, float, bool> a; + eastl::variant<int, float, bool> b; + + bool r = (a == b); + + nErrorCount += !r; + } + + // A variant is permitted to hold the same type more than once, and to hold differently cv-qualified versions of the same type. + + { + eastl::variant<int, int, int> a; + eastl::variant<int, int, int> b; + + bool r = (a == b); + + nErrorCount += !r; + } + + { + eastl::variant<signed int, unsigned int> a; + eastl::variant<signed int, unsigned int> b; + + bool r = (a == b); + + nErrorCount += !r; + } + + { + eastl::variant<int, bool> a; + eastl::variant<int, bool> b; + + bool r = (a == b); + + nErrorCount += !r; + } + + { + eastl::variant<volatile int, int, const int, const volatile int> a; + eastl::variant<volatile int, int, const int, const volatile int> b; + + bool r = (a == b); + + nErrorCount += !r; + } + + { + eastl::variant<volatile int, int, const int, const volatile int, bool> a; + eastl::variant<volatile int, int, const int, const volatile int, bool> b; + + bool r = (a == b); + + nErrorCount += !r; + } + + return nErrorCount; +} |