111 lines · cpp
1// Build with "cl.exe /Zi /GR- /GX- every-enum.cpp /link /debug /nodefaultlib /incremental:no /entry:main"2 3#include <stdint.h>4 5// clang-format off6void *__purecall = 0;7 8void __cdecl operator delete(void *,unsigned int) {}9void __cdecl operator delete(void *,unsigned __int64) {}10 11 12enum I8 : int8_t {13 I8A = INT8_MIN,14 I8B = 0,15 I8C = INT8_MAX16};17 18enum I16 : int16_t {19 I16A = INT16_MIN,20 I16B = 0,21 I16C = INT16_MAX,22};23 24enum I32 : int32_t {25 I32A = INT32_MIN,26 I32B = 0,27 I32C = INT32_MAX,28};29 30enum I64 : int64_t {31 I64A = INT64_MIN,32 I64B = 0,33 I64C = INT64_MAX,34};35 36enum U8 : uint8_t {37 U8A = 0,38 U8B = UINT8_MAX39};40 41enum U16 : uint16_t {42 U16A = 0,43 U16B = UINT16_MAX,44};45 46enum U32 : uint32_t {47 U32A = 0,48 U32B = UINT32_MAX,49};50 51enum U64 : uint64_t {52 U64A = 0,53 U64B = UINT64_MAX,54};55 56enum Char16 : char16_t {57 C16A = u'a',58 C16B = u'b',59};60 61enum Char32 : char32_t {62 C32A = U'a',63 C32B = U'b',64};65 66enum WChar : wchar_t {67 WCA = L'a',68 WCB = L'b',69};70 71enum Bool : bool {72 BA = true,73 BB = false74};75 76enum class EC {77 A = 1,78 B = 279};80 81struct Struct {82 enum Nested {83 A = 1,84 B = 285 };86};87 88template<typename T> void f(T t) {}89 90int main(int argc, char **argv) {91 f(I8A);92 f(I16A);93 f(I32A);94 f(I64A);95 f(U8A);96 f(U16A);97 f(U32A);98 f(U64A);99 100 f(C16A);101 f(C32A);102 f(WCA);103 f(BA);104 105 106 f(EC::A);107 f(Struct::A);108 109 f<const volatile EC>(EC::A);110}111