brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.4 KiB · 5eb0145 Raw
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