variant .init value

bauss jj_1337 at live.dk
Thu Feb 7 07:56:43 UTC 2019


On Thursday, 7 February 2019 at 07:33:50 UTC, Norm wrote:
> Hi,
>
> I'm trying to use Variant in a struct and want a default init 
> value like so:
>
> ---
> struct S {
>   Variant v = Variant(10);
> }
> void main() {auto s = S();}
>
> but when I try to build this I get the following error:
>
> dmd2/linux/bin64/../../src/phobos/std/variant.d(661): Error: 
> memcpy cannot be interpreted at compile time, because it has no 
> available source code
> Error: cannot interpret <error> at compile time
> ---
>
> I don't particularly need or want this to be available at 
> compile time, I really only want the struct to have a default 
> value when instantiated at runtime.
>
> Is there a way to do this with a Variant member?
>
> Thanks,
> Norm

I know this is not ideal, but here is a "workaround":

struct S {
   Variant v;

   static S opCall()
   {
       S s;
       s.v = Variant(10);
       return s;
   }
}

Would have worked better if structs allowed default ctor in D, 
but they don't unfortunately.


More information about the Digitalmars-d-learn mailing list