I want to export non-mangled instantiated through alias template function.
it can be useful for WASM, DLLs/SharedLibs and etc.
but alias for template instatiation is ignored.
pragma mangle to alias is ignored too.
-----------------------------------
void main() {}
export: // EXPORTed
extern (C): // NO MANGLE but IGNORED
public:
void fun( Char )( Char* ) { }
pragma (mangle, "func") // IGNORED
alias func = fun!char;
pragma( msg, func.mangleof );
pragma (mangle, "funw") // IGNORED
alias funw = fun!wchar;
pragma( msg, funw.mangleof );
------------ OUTPUT -----------------------
_D9onlineapp__T3funTaZQhUNaNbNiNfPaZv
_D9onlineapp__T3funTuZQhUNaNbNiNfPuZv
current workaround: wrap template funcs to non-template.
possible solution:
if "alias" locates in non-mangle block (extern(C) for example) then do not mangle name and check that no others entities with same name exists in current context.
OR/AND
make "pragma mangle" working for alias-es too.
Comment #1 by robert.schadek — 2024-12-13T19:05:06Z