On Sat, 15 May 2010 16:15:23 -0400, strtr <st...@spam.com> wrote:

Should I report these bugs?
(and how should I call this first one?)
----
module main;
//const S S1 = S(); // uncomment this to compile
struct S
{
  float value;
  static S opCall()
  {
    S s;
    return s;
  }
  const S S2 = S();
}
void main(){}
--
main.d(4): Error: struct main.S no size yet for forward reference
main.d(4): Error: struct main.S no size yet for forward reference
main.d(11): Error: cannot evaluate opCall() at compile time
----

Unlike some languages, D1 const does not imply static. Which means you are trying to define an S as containing an S, which would then contain another S and so on. This should work:

 struct S
 {
   float value;
   static S opCall()
   {
     S s;
     return s;
   }
   static const S S2 = S();
 }

-Steve

Reply via email to