<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Fri, May 5, 2017 at 1:47 AM, Xiaodi Wu via swift-evolution <span dir="ltr">&lt;<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><span class="gmail-">On Fri, May 5, 2017 at 12:41 AM, Brent Royal-Gordon <span dir="ltr">&lt;<a href="mailto:brent@architechies.com" target="_blank">brent@architechies.com</a>&gt;</span> wrote:</span><div class="gmail_extra"><div class="gmail_quote"><span class="gmail-"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div style="word-wrap:break-word"><div>I would think only final classes could participate in this, since a subclassable class would need to allow subclasses to override equality, and you can&#39;t override a static `==` operator method.</div></div></blockquote><div><br></div></span><div>I work so rarely with classes that I&#39;m embarrassed to have to ask this question: can classes not satisfy Equatable with a `public class func ==`?</div></div></div></div></blockquote><div><br></div><div>Currently:</div><div><br></div><div><div><font face="monospace, monospace">class C: Equatable {</font></div><div><font face="monospace, monospace">    class func == (lhs: C, rhs: C) -&gt; Bool {</font></div><div><font face="monospace, monospace">        return lhs === rhs</font></div><div><font face="monospace, monospace">    }</font></div><div><font face="monospace, monospace">}</font></div></div><div><br></div><div>Yields an error, “Operator &#39;==&#39; declared in non-final class &#39;C&#39; must be &#39;final&#39;”.</div><div><br></div><div>Nevin</div></div></div></div>