Unqualified class name
Ali Çehreli
acehreli at yahoo.com
Sun Aug 22 00:18:18 UTC 2021
On 8/21/21 2:48 PM, jfondren wrote:
> On Saturday, 21 August 2021 at 21:13:58 UTC, Jeremy T. Gibson wrote:
>> On Saturday, 21 August 2021 at 18:27:34 UTC, Ali Çehreli wrote:
>>> return __traits(identifier, typeof(this));
>>
>> That works perfectly! Thanks. =)
>
> This is exactly the solution you linked to in your first post, and found
> wanting.
>
> ```d
> class Whoami {
> string name() {
> return __traits(identifier, typeof(this));
> }
> }
> class AnotherOne : Whoami { }
>
> unittest {
> assert((new Whoami).name == "Whoami");
> assert((new AnotherOne).name == "Whoami");
> }
> ```
I did not read the linked thread but a "this template parameter" seems
to work in this case:
class Whoami {
string name(this This)() const {
return __traits(identifier, This);
}
}
class AnotherOne : Whoami { }
unittest {
assert((new Whoami).name == "Whoami");
assert((new AnotherOne).name == "AnotherOne");
}
void main() {
}
Ali
More information about the Digitalmars-d-learn
mailing list