Get calling this, if exists

Smoke Adams via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Fri Jun 24 08:15:29 PDT 2016


On Friday, 24 June 2016 at 03:16:58 UTC, Meta wrote:
> On Friday, 24 June 2016 at 03:10:51 UTC, Mike Parker wrote:
>> Oh, perhaps I misunderstood your question. Do you meant this:
>>
>> class Foo() {
>>    void bar() { Log(); }  // Pass reference to Foo instance
>> }
>>
>> void doSomething() { Log(); } // Null reference
>>
>> If so, the answer is no. And I don't see how that could work 
>> as a compile time parameter, given that the reference itself 
>> is a runtime value.
>
> It actually is possible. You just have to be explicit.
>
> void log(alias self)(string s)
> {
> 	pragma(msg, self.stringof);
> }
>
> struct Test
> {
> 	void test(string s)
> 	{
> 		log!this(s);
> 	}
> }
>
> void main()
> {
> 	Test t;
> 	t.test("asdf");
> }

I don't want to be explicit! One can be explicit with __FILE__ 
too but one doesn't have to be.

I don't care if it's null.


More information about the Digitalmars-d-learn mailing list