On Monday, 6 August 2018 at 18:28:11 UTC, Steven Schveighoffer wrote:
On 8/6/18 2:22 PM, vit wrote:
Hello,
I have this struct:

struct S{
     uint kind;
     void[N] data_;

define "N"


}

Instances of struct S are allocated by standard GC new and S.data_ can contain pointers/ranges to GC allocated data. If is GC disabled then  program run fine. But when is GC enabled then it fail randomly.

how does it fail?

-Steve


private auto sizeOf(T)(){return T.sizeof;}

struct ExprImpl(Ts...){
    enum N = max(staticMap!(sizeOf, Ts));

    invariant(kind_ != 0);
    uint kind_ = 0;
    void[N] data_;

this(T)(auto ref T x){/+emplace T to data_ and change kind_ to something != 0+/}
}

Ts == structs



data change without triggering invariant after allocation in other part of program.


Reply via email to