variant visit not pure?

learner learner at nomail.com
Thu May 7 20:12:03 UTC 2020


On Thursday, 7 May 2020 at 14:53:10 UTC, Steven Schveighoffer 
wrote:
> On 5/7/20 5:22 AM, learner wrote:
>> [...]
>
> Because VariantN (the base of Algebraic) can literally hold 
> anything, it cannot be pure, @safe, nothrow, @nogc.
>
> As others have recommended, I suggest using TaggedAlgebraic. I 
> recently have been using it to create an algebraic type to hold 
> a MYSQL value, so I can migrate the mysql-native library to be 
> @safe (mysql-native currently uses Variant for everything).
>
> I added a special UDA to TaggedAlgebraic, so you can guarantee 
> only @safe calls are allowed (for instance, if it can hold a 
> pointer and an int, then opBinary!"+" can be marked as @safe if 
> the operation fails when it's a pointer).
>
> TaggedAlgebraic could probably do the same for pure, but not 
> sure about nothrow and @nogc, since it uses exceptions when 
> things aren't valid.
>
> -Steve

Modules of D standard library aren't in a good shape, if everyone 
suggests alternatives for a basic building block as variant.

The types VariantN can hold are known at compile time, why can't 
it be specialized?




More information about the Digitalmars-d-learn mailing list