Relative Aliases?
Jonathan Marler via Digitalmars-d
digitalmars-d at puremagic.com
Sun May 28 08:04:15 PDT 2017
Is there a way to get an alias to a symbol relative to the
current location? I'm looking for a general solution but I'll
show an example to demonstrate one use case.
Say we want to access the alias to the current function symbol.
Obviously we can use the name of the current function, i.e.
void foo()
{
alias TheAliasWeWant = foo;
}
but this means the code must be modified for every function, i.e.
void foo1()
{
alias TheAliasWeWant = foo1;
}
void foo2()
{
alias TheAliasWeWant = foo1; // uh oh, should be foo2,
copy paste error
}
is there a way to implement a library function/template that can
do this?
void foo1()
{
alias TheAliasWeWant = currentFunctionAlias();
}
void foo2()
{
alias TheAliasWeWant = currentFunctionAlias(); // can't
make copy/paste error
}
Note that this is similar to the special keywords like
__FUNCTION__, __MODULE__, the difference being that we want a
symbol instead of a string. We may be able to create an
interesting solution to the function case where we unmangle the
__FUNCTION__ result and then mixin the resulting string, but I'm
also looking for the ability to get an alias to the current type,
i.e.
struct Foo
{
void foo()
{
alias TheAliasWeWant = Foo;
alias TheAliasWeWant = currentTypeAlias(); // possible?
}
}
More information about the Digitalmars-d
mailing list