[Issue 21203] Accept pragma(mangle) on aggregate types

d-bugmail at puremagic.com d-bugmail at puremagic.com
Mon Oct 5 10:17:36 UTC 2020


https://issues.dlang.org/show_bug.cgi?id=21203

Nicholas Wilson <iamthewilsonator at hotmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |iamthewilsonator at hotmail.co
                   |                            |m

--- Comment #5 from Nicholas Wilson <iamthewilsonator at hotmail.com> ---
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

--


More information about the Digitalmars-d-bugs mailing list