<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div><blockquote type="cite" class=""><div class="">On May 2, 2016, at 6:55 AM, David Sweeris via swift-evolution <<a href="mailto:swift-evolution@swift.org" class="">swift-evolution@swift.org</a>> wrote:</div><div class=""><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">I was just thinking that:<blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;" class=""><div class=""><div style="margin: 0px; line-height: normal; font-family: Menlo; color: rgb(187, 44, 162);" class=""><span style="font-variant-ligatures: no-common-ligatures" class="">protocol</span><span style="" class=""> Foo : </span><span style="font-variant-ligatures: no-common-ligatures" class="">reference</span><span style="" class=""> {}</span></div></div></blockquote><div class=""><span style="font-variant-ligatures: no-common-ligatures;" class=""><div style="margin: 0px; line-height: normal;" class=""><span style="font-variant-ligatures: no-common-ligatures;" class="">might be more to the point than:</span></div></span></div><blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;" class=""><div class=""><span style="font-variant-ligatures: no-common-ligatures;" class=""><div style="color: rgb(187, 44, 162); margin: 0px; line-height: normal; font-family: Menlo;" class=""><span style="font-variant-ligatures: no-common-ligatures" class="">protocol</span><span style="" class=""> Foo : </span><span style="font-variant-ligatures: no-common-ligatures" class="">class</span><span style="" class=""> {}</span></div></span></div></blockquote><div class=""><span style="font-variant-ligatures: no-common-ligatures;" class=""><div style="" class=""><br class=""></div><div style="" class="">I know that it’s currently a moot point because classes are the only* reference-semantics type of type in Swift, but it’s conceivable that there might some day be others.</div></span></div></div></div></blockquote><div><br class=""></div>Functions/closures have reference semantics, but they can't conform to protocols. Anyway, that's not the important question; the important question is why we would add a new kind of first-class reference type to the language — that can implement class protocols, no less — instead of, at most, calling it a new kind of class.<br class=""><br class=""><blockquote type="cite" class=""><div class=""><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div class=""><span style="font-variant-ligatures: no-common-ligatures;" class=""><div style="" class=""> Anyway, I’m not saying it’s a big deal or anything, I’m just trying to think of any source-breaking changes we might want to make before Swift 3 drops, and this seems like an easy one.</div><div style="" class=""><br class=""></div><div style="" class="">- Dave Sweeris</div><div style="" class=""><br class=""></div><div style="" class="">* I’m not actually sure this is true. I have a very vague recollection about some protocols getting reference semantics in certain circumstances, but the memory is so hazy I’m not sure I trust it. Also I can’t remember if the “indirect” keyword in enums affects the semantics.</div></span></div></div></div></blockquote><div><br class=""></div></div>Other than permitting otherwise-infinite types, no.<div class=""><br class=""></div><div class="">John.</div></body></html>