Thread overview
.sizeof on templates needs extra parens?
Aug 01, 2007
C. Dunn
Aug 01, 2007
BCS
Aug 01, 2007
C. Dunn
August 01, 2007
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
August 01, 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
August 01, 2007
That makes sense.  Thanks.