| // Build with "cl.exe /Z7 /GR- /GS- /GX- every-class.cpp /link /debug:full /nodefaultlib /incremental:no /entry:main" | |
| #include <stdint.h> | |
| // clang-format off | |
| void *__purecall = 0; | |
| void __cdecl operator delete(void *, unsigned int) {} | |
| void __cdecl operator delete(void *, unsigned __int64) {} | |
| struct Nothing {}; | |
| struct Constructor { Constructor() {} }; | |
| struct Assignment { | |
| Assignment &operator=(Assignment Other) { return *this; } | |
| }; | |
| struct Cast { | |
| operator int() { return 42; } | |
| }; | |
| struct Nested { | |
| struct F {}; | |
| }; | |
| struct Operator { | |
| int operator+(int X) { return 42; } | |
| }; | |
| class Class {}; | |
| union Union {}; | |
| enum class Enum {A}; | |
| template<typename T> void f(T t) {} | |
| int main(int argc, char **argv) { | |
| struct Scoped {}; | |
| struct { } Anonymous; | |
| f(Nothing{}); | |
| f(Constructor{}); | |
| f(Assignment{}); | |
| f(Cast{}); | |
| f(Nested{}); | |
| f(Operator{}); | |
| f(Nested::F{}); | |
| f(Scoped{}); | |
| f(Class{}); | |
| f(Union{}); | |
| f(Anonymous); | |
| f(Enum::A); | |
| f<const Nothing>(Nothing{}); | |
| f<volatile Nothing>(Nothing{}); | |
| f<const volatile Nothing>(Nothing{}); | |
| f<__unaligned Nothing>(Nothing{}); | |
| return 0; | |
| } |