digitalmars.D.learn - New template problem
- bearophile (15/15) May 18 2008 After a painful search I have found a new bug in my libs, that comes out...
- Steven Schveighoffer (3/18) May 19 2008 Any reason why you use HasLength!(typeof(new Foo)) vs HasLength!(Foo)?
- bearophile (5/6) May 19 2008 Nope.
After a painful search I have found a new bug in my libs, that comes out using DMD 1.030 (with 1.029 the following code works): template HasLength(T) { // const bool HasLength = is(typeof(T.length)) || is(typeof(T.init.length)); const bool HasLength = is(typeof(T.length)); } void main() { class Foo { int length; } //assert(!HasLength!(typeof( new Foo ))); assert(!HasLength!(typeof( new Foo ))); } Output (DMD 1.030): Error: this for length needs to be type Foo not type int Do you have some workaround/suggestion? Bye, bearophile
May 18 2008
"bearophile" wroteAfter a painful search I have found a new bug in my libs, that comes out using DMD 1.030 (with 1.029 the following code works): template HasLength(T) { // const bool HasLength = is(typeof(T.length)) || is(typeof(T.init.length)); const bool HasLength = is(typeof(T.length)); } void main() { class Foo { int length; } //assert(!HasLength!(typeof( new Foo ))); assert(!HasLength!(typeof( new Foo ))); } Output (DMD 1.030): Error: this for length needs to be type Foo not type int Do you have some workaround/suggestion?Any reason why you use HasLength!(typeof(new Foo)) vs HasLength!(Foo)? -Steve
May 19 2008
Steven Schveighoffer:Any reason why you use HasLength!(typeof(new Foo)) vs HasLength!(Foo)?Nope. (I have reverted to DMD 1.029 because 1.030 doesn't work for me, so I can't tell you if your version too produces the bug). Bye and thank you, bearophile
May 19 2008