.sizeof on templates needs extra parens?

BCS BCS at pathlink.com
Wed Aug 1 11:20:23 PDT 2007


C. Dunn wrote:
> Why do I need extra parentheses to get template.sizeof?
> 
> class A(T){
>   T x;
> };
> 
> int y = (A!(int)).sizeof;
> int z = A!(char).sizeof; // does not compile (line 6)
> 
> hello.d(6): Error: undefined identifier class A.sizeof
> hello.d(6): Error: cannot implicitly convert expression (class A.sizeof) of type void to int


keep in mind that class Name(args) is actually just shorthand for

template A(T){
   class A{
     T x;
   }
}

A!(int) -> A!(int).A
A!(int).sizeof -> A!(int).sizeof // doesn't exits


More information about the Digitalmars-d-learn mailing list