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?