alias symbol name

Radu void at null.pt
Tue Jun 26 11:28:11 UTC 2018


On Tuesday, 26 June 2018 at 10:19:44 UTC, Jonathan M Davis wrote:
> 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

Ha! :) yeah I was pretty sure this will not work.

I'm looking to generate some custom wrappers and knowing when 
something is really `size_t` is important, I have a backup plan, 
but having a compiler trait to get an alias symbol name would be 
great. Maybe this is worthy an enhancement request?


More information about the Digitalmars-d-learn mailing list