digitalmars.D.bugs - two template bugs
- Ilya Zaitseff (32/32) Sep 07 2005 DMD 0.130
DMD 0.130 1) This error appears only if X is a template class. static class X() { static int a; static int b = a; // error here } void main() { X!() x; } gives: bug1.d(4): non-constant expression a 2) This error appears only if Y is a template class and Y inherits from X. static class X { static class Y(): X { static class Z { Y.Z z; // error here } } } void main() { X.Y!().Z x; } gives: bug2.d(7): identifier 'Z' of 'Y.Z' is not defined bug2.d(7): Y.Z is used as a type bug2.d(7): variable x.X.Y!().Y.Z.z voids have no value bug2.d(13): template instance x.X.Y!() error instantiating Maybe I dont understand something important in D templates?
Sep 07 2005
In article <op.swrd5aogaaezs2 ilya.tec.amursk.ru>, Ilya Zaitseff says...<snip> 2) This error appears only if Y is a template class and Y inherits from X. static class X { static class Y(): X { static class Z { Y.Z z; // error here } } } void main() { X.Y!().Z x; } gives: bug2.d(7): identifier 'Z' of 'Y.Z' is not defined bug2.d(7): Y.Z is used as a type bug2.d(7): variable x.X.Y!().Y.Z.z voids have no value bug2.d(13): template instance x.X.Y!() error instantiating Maybe I dont understand something important in D templates?static class X { static class Y(): X { static class Z { Y!().Z z; } } } void main() { X.Y!().Z x; } will do the job :)
Sep 08 2005
In article <op.swrd5aogaaezs2 ilya.tec.amursk.ru>, Ilya Zaitseff says...DMD 0.130 1) This error appears only if X is a template class. static class X() { static int a; static int b = a; // error here } void main() { X!() x; } gives: bug1.d(4): non-constant expression aAnd for the first one, you have to use static this to evaluate a "variable". static class X() { static int a; static int b; static this() { b = a; } } cheers,
Sep 08 2005