[Issue 20719] Self referential struct definition causes stack overflow
    d-bugmail at puremagic.com 
    d-bugmail at puremagic.com
       
    Tue Apr 14 19:41:27 UTC 2020
    
    
  
https://issues.dlang.org/show_bug.cgi?id=20719
--- Comment #1 from Ben <ben.james.jones at gmail.com> ---
Reduced test case:
import std.meta : AliasSeq;
import std.typecons : ReplaceTypeUnless;
import std.traits : isCopyable, isAssignable;
struct This; //defined in std.variant this way
struct SumType(TypeArgs)
{
  alias Types = AliasSeq!(ReplaceTypeUnless!(isSumType, This, typeof(this),
TypeArgs));
  union Storage
  {
    template memberName(T)
    {
      mixin("enum memberName = `values_", "`;");
    }
    static foreach (T; Types)
      mixin("T ", memberName!T, ";");
  }
  Storage storage;
  static foreach (T; Types) static if (isCopyable!T){}
  static foreach (T; Types) static if (isAssignable!T){}
}
enum isSumType(T) = is(Args);
struct B {
  SumType!(This)elems;
}
--
    
    
More information about the Digitalmars-d-bugs
mailing list