<div dir="ltr">I also agree that requiring the developer to specify the modifier does make sense esp. with the performance downsides and the generic issue described by Slava.<div><br></div><div>The example with the recursive struct makes sense! I forgot that in my cases either an enum, an Optional (so an enum) or a protocol were breaking that init cycle for recursive variables.</div><div><font face="monospace, monospace">lazy private(set) var</font> will probably also work although it&#39;s use is likely limited.</div><div><br></div><div>Now I do have a good sense what is possible and how.<br></div><div>Thank you very much, Slava!</div><div><div><br></div></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Dec 11, 2015 at 5:32 PM, Matthew Johnson <span dir="ltr">&lt;<a href="mailto:matthew@anandabits.com" target="_blank">matthew@anandabits.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class=""><br>
&gt; Also even if ‘indirect’ could always be inferred, it seems like a good idea to give the user control over where the indirection occurs — this can have an effect on the size of the enum value for instance.<br>
<br>
</span>+1.  Requiring it to be specified also prevents unintentional indirection.</blockquote></div><br></div>