Access to intersection fields of an algebraic data type

Meta jared771 at gmail.com
Sat Jan 19 17:51:58 UTC 2019


On Saturday, 19 January 2019 at 17:40:53 UTC, sighoya wrote:
> Is there a solution for the following problem:
>
> import std.variant : Algebraic;
>
> struct A
> {
>     int a=2;
> }
>
> struct B
> {
>     int a=2;
> };
>
> void main()
> {
>     Algebraic!(A,B) c=A();
>     writeln(c.a);
>     return;
> }
>
> Error: no property a for type VariantN!(4LU, A, B)

You want the untyped version of std.variant.visit:

writeln(c.visit!(aOrB => aOrB.a));


More information about the Digitalmars-d mailing list