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?

Reply via email to