[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