const struct not accepted as initializer by dmd 2.002
Regan Heath
regan at netmail.co.nz
Fri Jul 13 04:51:02 PDT 2007
torhu wrote:
> Reposting from D.learn, since there were no answers there.
>
> ---
> struct Inner
> {
> int value;
> }
>
> struct Outer {
> //const(Inner) i; // this fixes it, but is not valid in D 1.0
> Inner i;
> }
>
> const Inner ic = { 5 }; // const or invariant here makes no difference
>
> Outer outer = {
> i: ic // line 14
> //i: { 5 } // this is allowed
> };
> ---
> c:\prog\test\D>dmd -c test
> test.d(14): Error: non-constant expression cast(Inner)ic
> ---
>
> Since the value of ic is fixed at compile time, shouldn't it be
> equivalent to a literal?
>
> I'm trying to make this code work in D version 1 too, and since it's for
> an example, I'm trying to avoid any string mixins or other ugly
> workarounds.
I can't think of anything.
Is there a pre-defined version specifier for D1.0 and D2.0 you could use
to conditionally select code which works for each?
Regan
More information about the Digitalmars-d
mailing list