alias symbol name

Jonathan M Davis newsgroup.d at jmdavisprog.com
Tue Jun 26 10:19:44 UTC 2018


On Tuesday, June 26, 2018 09:47:44 Radu via Digitalmars-d-learn wrote:
> On Tuesday, 26 June 2018 at 09:24:15 UTC, Stefan Koch wrote:
> > On Tuesday, 26 June 2018 at 09:14:11 UTC, Radu wrote:
> >> Consider this https://run.dlang.io/is/HyY2qG
> >>
> >> ---
> >> void main()
> >> {
> >>
> >>     import std.traits;
> >>     size_t s;
> >>
> >>     pragma(msg, typeof(s).stringof);
> >>     pragma(msg, mangledName!(typeof(s)));
> >>     pragma(msg, mangledName!s);
> >>
> >> }
> >> ---
> >>
> >> It outputs:
> >> ---
> >> ulong
> >> m
> >> _D9onlineapp4mainFZ1sm
> >> ---
> >>
> >> I'm looking for a way to get the `s` type symbol name (size_t)
> >> not whatever the alias is pointing to (ulong in this case).
> >>
> >> Is there a way to obtain the alias symbol name?
> >
> > __traits(identifier, sym);
>
> Him, that will print the symbol name, in my case `s`.
>
> To cut to chase - I'm looking something that will print `size_t`
> for the symbol `s`.

I'm pretty sure that that's impossible. As I understand it, the compiler
basically just replaces aliases with what they refer to and doesn't care
what the original type was. And they _definitely_ don't affect mangling. If
you're looking to treat an alias as anything different from what it refers
to, you're going to be disappointed.

- Jonathan M Davis



More information about the Digitalmars-d-learn mailing list