/++ REQUIRED_ARGS: -HC=verbose TEST_OUTPUT: --- // Automatically generated by Digital Mars D Compiler v$n$ #pragma once #include #include #include #include #ifdef CUSTOM_D_ARRAY_TYPE #define _d_dynamicArray CUSTOM_D_ARRAY_TYPE #else /// Represents a D [] array template struct _d_dynamicArray final { size_t length; T *ptr; _d_dynamicArray() : length(0), ptr(NULL) { } _d_dynamicArray(size_t length_in, T *ptr_in) : length(length_in), ptr(ptr_in) { } T& operator[](const size_t idx) { assert(idx < length); return ptr[idx]; } const T& operator[](const size_t idx) const { assert(idx < length); return ptr[idx]; } }; #endif extern "C" int32_t freeC(); // Ignored function dtoh_mangling.bar because C++ doesn't support explicit mangling struct Data final { // Ignored function dtoh_mangling.Data.foo because of linkage // Ignored function dtoh_mangling.Data.bar because C++ doesn't support explicit mangling Data() { } }; extern void accept(Data data); extern "C" void hasDefault(int32_t i = freeC()); extern "C" void hasDefaultMember(int32_t i = memberC()); extern "C" int32_t someVarC; // Ignored variable dtoh_mangling.var2 because C++ doesn't support explicit mangling struct HasMangleMember final { int32_t someAttrC; int32_t someAttrCpp; void hasDefaultVar(int32_t i = someAttrC); HasMangleMember() : someAttrC(), someAttrCpp() { } HasMangleMember(int32_t someAttrC, int32_t someAttrCpp = 0) : someAttrC(someAttrC), someAttrCpp(someAttrCpp) {} }; extern "C" void hasDefaultVar(int32_t i = someVarC); --- ++/ extern(C): pragma(mangle, "freeC") int foo() { return 0; } pragma(mangle, "freeCpp") extern (C++) void bar() {} pragma(mangle, "Aggregate") struct Data { pragma(mangle, "memberC") static int foo() { return 0; } pragma(mangle, "memberCpp") extern (C++) void bar() {} } extern(C++) void accept(Data data) {} void hasDefault(int i = foo()) {} void hasDefaultMember(int i = Data.foo()) {} pragma(mangle, "someVarC") __gshared int var; pragma(mangle, "someVarCpp") extern(C++) __gshared int var2; struct HasMangleMember { pragma(mangle, "someAttrC") int var; pragma(mangle, "someAttrCpp") extern(C++) int var2; extern(C++) void hasDefaultVar(int i = var) {} } void hasDefaultVar(int i = var) {}