https://issues.dlang.org/show_bug.cgi?id=21203
Nicholas Wilson <[email protected]> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |[email protected] | |m --- Comment #5 from Nicholas Wilson <[email protected]> --- Runnable example: template ScopeClass(C) // if (is(C == class)) { static if (__traits(getLinkage, C) == "C++") { extern(C++, class) pragma(mangle, C.mangleof) // <- here's the magic! struct ScopeClass { char[__traits(classInstanceSize, C)] buffer; //... all the things ... } } } extern(C++): class MyClass {} void funa(MyClass); // mangles MyClass* void funb(const MyClass); // mangles const MyClass* const void func(ScopeClass!MyClass); // mangles MyClass void fund(const ScopeClass!MyClass); // mangles const MyClass void fune(ref ScopeClass!MyClass); // mangles MyClass& void funf(ref const ScopeClass!MyClass); // mangles const MyClass& void fung(const(ScopeClass!MyClass)*); // currently prints pragma(msg,funa.mangleof); // _Z4funaP7MyClass pragma(msg,funb.mangleof); // _Z4funbPK7MyClass pragma(msg,func.mangleof); // _Z4func10ScopeClassIP7MyClassE pragma(msg,fund.mangleof); // _Z4fund10ScopeClassIP7MyClassE pragma(msg,fune.mangleof); // _Z4funeR10ScopeClassIP7MyClassE pragma(msg,funf.mangleof); // _Z4funfRK10ScopeClassIP7MyClassE pragma(msg,fung.mangleof); // _Z4fungPK10ScopeClassIP7MyClassE --
