49 lines
949 B
C++
49 lines
949 B
C++
// Compile with "cl /c /Zi /GR- ComplexPaddingTest.cpp"
|
|
// Link with "link ComplexPaddingTest.obj /debug /nodefaultlib /entry:main"
|
|
|
|
#include <stdint.h>
|
|
|
|
extern "C" using at_exit_handler = void();
|
|
|
|
int atexit(at_exit_handler handler) { return 0; }
|
|
|
|
struct TestVB {
|
|
static void operator delete(void *ptr, size_t sz) {}
|
|
virtual ~TestVB() {}
|
|
virtual void IntroFunction1() {}
|
|
int X;
|
|
} A;
|
|
|
|
struct TestNVB {
|
|
static void operator delete(void *ptr, size_t sz) {}
|
|
virtual ~TestNVB() {}
|
|
virtual void IntroFunction2() {}
|
|
int Y;
|
|
} B;
|
|
|
|
struct TestVBLayout
|
|
: public virtual TestVB,
|
|
public TestNVB {
|
|
static void operator delete(void *ptr, size_t sz) {}
|
|
int Z;
|
|
} C;
|
|
|
|
struct TestIVBBase : public virtual TestVB {
|
|
int A;
|
|
} D;
|
|
|
|
struct TestIVBDerived : public TestIVBBase {
|
|
int B;
|
|
} E;
|
|
|
|
struct TestIVBMergedDerived
|
|
: public virtual TestVB,
|
|
public TestIVBBase {
|
|
int B;
|
|
} F;
|
|
|
|
int main(int argc, char **argv) {
|
|
|
|
return 0;
|
|
}
|