digitalmars.D.learn - tupleof.length of a class in a template return 0
- =?UTF-8?B?Ik1pY2hhw6ts?= Larouche" (12/12) Apr 16 2012 I've given a second chance to D after watching D videos from
- =?UTF-8?B?Ik1pY2hhw6ts?= Larouche" (7/19) Apr 16 2012 Sorry I hit the send button.
- SomeDude (16/21) Apr 18 2012 For what it's worth, dmd 2.059 (it seems you are using v2.042)
- =?UTF-8?B?Ik1pY2hhw6ts?= Larouche" (5/27) Apr 18 2012 Reading the bug thread, I am wondering why my template worked in
- Somedude (3/9) Apr 19 2012 Cool. Glad it helpted. :)
I've given a second chance to D after watching D videos from Lang.NEXT 2012. As a first look, I wanted to try generate serialization code at compile time. Here's the class: class MyObject { public int m_id; public Data m_data; public bool AutoDelete; public int RefCount; mixin(AddStreamSerialization!(MyObject)); }
Apr 16 2012
On Monday, 16 April 2012 at 23:58:29 UTC, Michaël Larouche wrote:I've given a second chance to D after watching D videos from Lang.NEXT 2012. As a first look, I wanted to try generate serialization code at compile time. Here's the class: class MyObject { public int m_id; public Data m_data; public bool AutoDelete; public int RefCount; mixin(AddStreamSerialization!(MyObject)); }Sorry I hit the send button. My template works with a struct but when I try to mixin my template in a class, I get compile error because T.tupleof.length returns 0. Here's the whole code: http://ideone.com/UR6YU
Apr 16 2012
On Tuesday, 17 April 2012 at 00:04:16 UTC, Michaël Larouche wrote:My template works with a struct but when I try to mixin my template in a class, I get compile error because T.tupleof.length returns 0. Here's the whole code: http://ideone.com/UR6YUFor what it's worth, dmd 2.059 (it seems you are using v2.042) gives this message: serial.d(21): Error: class serial.MyObject no size yet for forward reference serial.d(11): Error: template instance serial.GenerateFieldSerialization!(MyObject,0,"m_id","m_data","AMethod","AutoDelete","AnotherMethod","RefCount","Method1","toString","toHash","opCmp","opEquals", Monitor","factory") error instantiating According to Kenji Hara, "tupleof property requires complete semantic analysis to get the fields of a type." http://d.puremagic.com/issues/show_bug.cgi?id=7249 If you haven't solved your problem yet, you may try the workaround described or have a look at the result of googling this: "no size yet for forward reference" site:digitalmars.com/d
Apr 18 2012
On Wednesday, 18 April 2012 at 16:56:39 UTC, SomeDude wrote:On Tuesday, 17 April 2012 at 00:04:16 UTC, Michaël Larouche wrote:Reading the bug thread, I am wondering why my template worked in a struct but not inside a class. Anyway, I decided to move my mixin outside the struct/class and abuse UFCS instead. Now everything works like a charm :)My template works with a struct but when I try to mixin my template in a class, I get compile error because T.tupleof.length returns 0. Here's the whole code: http://ideone.com/UR6YUFor what it's worth, dmd 2.059 (it seems you are using v2.042) gives this message: serial.d(21): Error: class serial.MyObject no size yet for forward reference serial.d(11): Error: template instance serial.GenerateFieldSerialization!(MyObject,0,"m_id","m_data","AMethod","AutoDelete","AnotherMethod","RefCount","Method1","toString","toHash","opCmp","opEquals", Monitor","factory") error instantiating According to Kenji Hara, "tupleof property requires complete semantic analysis to get the fields of a type." http://d.puremagic.com/issues/show_bug.cgi?id=7249 If you haven't solved your problem yet, you may try the workaround described or have a look at the result of googling this: "no size yet for forward reference" site:digitalmars.com/d
Apr 18 2012
Le 19/04/2012 05:04, "Michaël Larouche" <michael.larouche gmail.com>" a écrit :Reading the bug thread, I am wondering why my template worked in a struct but not inside a class. Anyway, I decided to move my mixin outside the struct/class and abuse UFCS instead. Now everything works like a charm :)Cool. Glad it helpted. :)
Apr 19 2012