www.digitalmars.com         C & C++   DMDScript  

D - template's static constructor

reply Gennadi Pais <Gennadi_member pathlink.com> writes:
Hi All,
could you explain me a following behavior of the D compiler/linker?
I wrote something like:
______ in the module foo ______
..
template TTestStatic(T) {
class Class {
public static this () {
printf ("static TTestStatic.Class.Ctor()\n");
}
}
}

______ in the module bar ______
private import c.stdio;
private import foo;
..
alias instance TTestStatic(int) TSI;
..
int main () {
printf ("Begin of the main function\n");
..
printf ("End of the main function\n");
return 0;
}	
_________________________________
After the compilation there was no static constructor call...
Ok... I've tried to solve it and when I added static constructor to any class in
module "bar" (or another one) or just an empty class with static constructor I
see the static Ctor of the template was called!
Compiler is: Digital Mars D Compiler Beta v0.68
Thanks!
Aug 06 2003
parent "Mike Wynn" <mike.wynn l8night.co.uk> writes:
have you tried
adding
TSI.class a;
before main ?

the linker will not need to link any code because nothing calls methods of
class TTestStatic(int).Class
there are no instances etc.

"Gennadi Pais" <Gennadi_member pathlink.com> wrote in message
news:bgqg8m$b5d$1 digitaldaemon.com...
 Hi All,
 could you explain me a following behavior of the D compiler/linker?
 I wrote something like:
 ______ in the module foo ______
 ..
 template TTestStatic(T) {
 class Class {
 public static this () {
 printf ("static TTestStatic.Class.Ctor()\n");
 }
 }
 }

 ______ in the module bar ______
 private import c.stdio;
 private import foo;
 ..
 alias instance TTestStatic(int) TSI;
 ..
 int main () {
 printf ("Begin of the main function\n");
 ..
 printf ("End of the main function\n");
 return 0;
 }
 _________________________________
 After the compilation there was no static constructor call...
 Ok... I've tried to solve it and when I added static constructor to any
class in
 module "bar" (or another one) or just an empty class with static
constructor I
 see the static Ctor of the template was called!
 Compiler is: Digital Mars D Compiler Beta v0.68
 Thanks!
Aug 07 2003