<div dir="ltr">On 19 October 2017 at 08:52, Xiaodi Wu <span dir="ltr">&lt;<a href="mailto:xiaodi.wu@gmail.com" target="_blank">xiaodi.wu@gmail.com</a>&gt;</span> wrote:<br><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">No, I&#39;m talking about the implicit discardability proposed by Brent, such as for all Optional&lt;@discardable T&gt;.<br><br>He proposes that the @discardable syntax has a strong motivating advantage because it can be extended in a way to mark _types_ so that return values of those types are always implicitly @discardable. That is:<br><br>@discardable class A { ... }<br>// any return value of type A is implicitly discardable<br>// what happens if A : Error and I throw A?<br><br>class B : A { ... }<br>// is any return value of type B also implicitly discardable?</blockquote><div><br></div><div>&quot;discardable&quot; only apply to return types, similar to how &quot;inout&quot; only applies to &quot;parameter types&quot;<br></div><div>(e.g. you can&#39;t make &quot;func foo(x: Optional&lt;inout Bool&gt;)&quot;</div><div><br></div><div>Mike</div><div><br></div></div></div></div>