Type value

js.mdnq js_adddot+mdng at gmail.com
Mon Dec 10 23:50:09 PST 2012


On Tuesday, 11 December 2012 at 07:15:38 UTC, Zhenya wrote:
> I'm sorry for my english.
> I know that D != Python and my example don't need
> any RTTI.
>
> D has alias this feature.My example shows that we can use alias 
> this with types.
> And I just want use this:
>
> struct Type(T)
> {
>    alias T m_type;
>    alias m_type this;
> }
>
> int main()
> {
>    Type!int Int;
>    Int i;//should compile by definition of alias this
> }

My I ask, why not just use int directly?

I'm not proficient enough with D yet but it seems to me that the 
example does not make sense.

alias T m_type;
alias m_type this;

should be equivalent to

alias T this;

which, in some sense makes struct Type(T) equal to T... which is 
what you are thinking, I think.

But! I also believe that structs are meant as value types and are 
addressable.

So when you do

Int i; you are essentially doing something like

int x;
x i;

which makes no sense.

If you do this instead,

	alias Type!int Int;
	Int i;

then it will compile, of course.

But your way, when you do Int x; you are specifically trying to 
create a instance of an object. Yet you are not wanting it to be 
an object and I'm not sure what you are wanting x to be. (another 
type? a type of a type?)





More information about the Digitalmars-d-learn mailing list