Question about typeof(*this)

Ivo Kasiuk i.kasiuk at gmx.de
Sun Oct 17 03:21:06 PDT 2010


choi heejo wrote:
> hi there, please read this code:
> 
> 
> import std.stdio;
> 
> 
> struct test(T)
> {
> alias typeof(*this) type;
> T a;
> }
> 
> 
> 
> 
> void main()
> {
> test!(int).type t;
> 
> t.a = 123;
> 
> writeln(t.a);
> }
> 
> 
> I guessed it would work. but the compiler said:
> 
> 
> main.d(7): Error: can only * a pointer, not a 'test!(int)'
> main.d(14): Error: template instance main.test!(int) error
> instantiating
> 
> 
> what is the problem?
> 

In D2, "this" in a struct is a reference type, not a pointer type. So
just replace "typeof(*this)" by "typeof(this)" and then it should work.

Ivo



More information about the Digitalmars-d-learn mailing list