<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Wed, Sep 6, 2017 at 5:42 PM, Haravikk via swift-evolution <span dir="ltr"><<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">the issue I'm trying to raise is that when those, and similar features, are used in synthesised behaviour (default implementations based upon the concrete type), that these behaviours should be opted into explicitly, otherwise they open up potential for all kinds of bugs, even when the assumptions being made about the concrete type are simple such as in the case for Equatable/Hashable. There's just too much potential for this kind of reflective protocol implementation to overreach; to me it feels very much like going into a restaurant and the waiter coming across and force-feeding me something I don't want instead of taking my order.<br>
<div class="HOEnZb"><div class="h5"></div></div></blockquote></div><br></div><div class="gmail_extra">I might suggest that instead it is like you have gone into a pizza shop and said, “I’d like a large veggie pizza please.” And they made you a pizza with their standard dough and their standard sauce and their standard cheese and their standard selection of vegetables.</div><div class="gmail_extra"><br></div><div class="gmail_extra">If you wanted some other dough or sauce or cheese or toppings you would have ordered it. And the fact is you *did* order a veggie pizza (ie. conformed to a certain protocol). It’s not like they brought you something you didn’t order. You ordered what you wanted, and that’s what they brought you.</div><div class="gmail_extra"><br></div><div class="gmail_extra">And for those times when you *do* want to customize your order, that is perfectly fine too.</div><div class="gmail_extra"><br></div><div class="gmail_extra">Nevin</div></div>