<html><head><style>
body {
        font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
        padding:1em;
        margin:auto;
        background:#fefefe;
}

h1, h2, h3, h4, h5, h6 {
        font-weight: bold;
}

h1 {
        color: #000000;
        font-size: 28pt;
}

h2 {
        border-bottom: 1px solid #CCCCCC;
        color: #000000;
        font-size: 24px;
}

h3 {
        font-size: 18px;
}

h4 {
        font-size: 16px;
}

h5 {
        font-size: 14px;
}

h6 {
        color: #777777;
        background-color: inherit;
        font-size: 14px;
}

hr {
        height: 0.2em;
        border: 0;
        color: #CCCCCC;
        background-color: #CCCCCC;
    display: inherit;
}

p, blockquote, ul, ol, dl, li, table, pre {
        margin: 15px 0;
}

a, a:visited {
        color: #4183C4;
        background-color: inherit;
        text-decoration: none;
}

#message {
        border-radius: 6px;
        border: 1px solid #ccc;
        display:block;
        width:100%;
        height:60px;
        margin:6px 0px;
}

button, #ws {
        font-size: 12 pt;
        padding: 4px 6px;
        border-radius: 5px;
        border: 1px solid #bbb;
        background-color: #eee;
}

code, pre, #ws, #message {
        font-family: Monaco;
        font-size: 10pt;
        border-radius: 3px;
        background-color: #F8F8F8;
        color: inherit;
}

code {
        border: 1px solid #EAEAEA;
        margin: 0 2px;
        padding: 0 5px;
}

pre {
        border: 1px solid #CCCCCC;
        overflow: auto;
        padding: 4px 8px;
}

pre > code {
        border: 0;
        margin: 0;
        padding: 0;
}

#ws { background-color: #f8f8f8; }


.bloop_markdown table {
border-collapse: collapse;  
font-family: Helvetica, arial, freesans, clean, sans-serif;  
color: rgb(51, 51, 51);  
font-size: 15px; line-height: 25px;
padding: 0; }

.bloop_markdown table tr {
border-top: 1px solid #cccccc;
background-color: white;
margin: 0;
padding: 0; }
     
.bloop_markdown table tr:nth-child(2n) {
background-color: #f8f8f8; }

.bloop_markdown table tr th {
font-weight: bold;
border: 1px solid #cccccc;
margin: 0;
padding: 6px 13px; }

.bloop_markdown table tr td {
border: 1px solid #cccccc;
margin: 0;
padding: 6px 13px; }

.bloop_markdown table tr th :first-child, table tr td :first-child {
margin-top: 0; }

.bloop_markdown table tr th :last-child, table tr td :last-child {
margin-bottom: 0; }

.bloop_markdown blockquote{
  border-left: 4px solid #dddddd;
  padding: 0 15px;
  color: #777777; }
  blockquote > :first-child {
    margin-top: 0; }
  blockquote > :last-child {
    margin-bottom: 0; }

code, pre, #ws, #message {
    word-break: normal;
    word-wrap: normal;
}

hr {
    display: inherit;
}

.bloop_markdown :first-child {
    -webkit-margin-before: 0;
}

code, pre, #ws, #message {
    font-family: Menlo, Consolas, Liberation Mono, Courier, monospace;
}


.send { color:#77bb77; }
.server { color:#7799bb; }
.error { color:#AA0000; }</style></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><div class="bloop_markdown"><p>=D</p>

<p>We’re already discussing this in a looooot (I mean really lot) different threads.</p>

<p>Search for <strong>existentials</strong> or <code>Any&lt;…&gt;</code> or <code>type&lt;…&gt;</code> or <code>All&lt;…&gt;</code>.</p>

<p>SE–0095 is the first step in that direction. We want a shorthand version first and design a more complex functionality like <code>Any&lt;…&gt;</code> later.</p>

<ul>
<li><code>Any&lt;UIViewController, Protocol1, Protocol2&gt;</code> (I prefer this one)</li>
<li>or <code>Any&lt;UIViewController &amp; Protocol1 &amp; Protocol2&gt;</code></li>
<li>After Swift 3 will drop I’ll submit a proposal for class-requirement for the shorthand version: <code>UIViewController &amp; Protocol1 &amp; Protocol2</code> or a type alias: <code>typealias CustomConstrainedController = UIViewController &amp; Protocol1 &amp; Protocol2</code></li>
</ul>

<p></p></div><div class="bloop_original_html"><style>body{font-family:Helvetica,Arial;font-size:13px}</style><div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px; color: rgba(0,0,0,1.0); margin: 0px; line-height: auto;"><br></div> <br> <div id="bloop_sign_1465929083101932032" class="bloop_sign"><div style="font-family:helvetica,arial;font-size:13px">--&nbsp;<br>Adrian Zubarev<br>Sent with Airmail</div></div> <br><p class="airmail_on">Am 14. Juni 2016 um 18:59:54, Adrian Śliwa via swift-evolution (<a href="mailto:swift-evolution@swift.org">swift-evolution@swift.org</a>) schrieb:</p> <blockquote type="cite" class="clean_bq"><span><div><div></div><div>


<title></title>


<div dir="ltr">Hi all,
<div><br></div>
<div>In Obj-C we have:</div>
<div>
<pre class="inbox-default inbox-prettyprint inbox-prettyprinted" style="margin-top:0px;padding:5px;border:0px;font-size:13px;width:auto;max-height:600px;overflow:auto;font-family:consolas,menlo,monaco,'lucida console','liberation mono','dejavu sans mono','bitstream vera sans mono','courier new',monospace,sans-serif;background-color:rgb(239,240,241);color:rgb(57,51,24);word-wrap:normal"><code style="margin:0px;padding:0px;border:0px;font-family:consolas,menlo,monaco,'lucida console','liberation mono','dejavu sans mono','bitstream vera sans mono','courier new',monospace,sans-serif;white-space:inherit"><span class="inbox-lit" style="margin:0px;padding:0px;border:0px;color:rgb(125,39,39)">@property</span><span class="inbox-pln" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)"> </span><span class="inbox-typ" style="margin:0px;padding:0px;border:0px;color:rgb(43,145,175)">UIViewController</span><span class="inbox-pun" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">&lt;</span><span class="inbox-typ" style="margin:0px;padding:0px;border:0px;color:rgb(43,145,175)">Protocol1</span><span class="inbox-pun" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">,</span><span class="inbox-pln" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)"> </span><span class="inbox-typ" style="margin:0px;padding:0px;border:0px;color:rgb(43,145,175)">Protocol2</span><span class="inbox-pun" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">,</span><span class="inbox-pln" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)"> </span><span class="inbox-pun" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">...&gt;</span><span class="inbox-pln" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)"> </span><span class="inbox-pun" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">*</span><span class="inbox-pln" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">viewController</span><span class="inbox-pun" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">;</span></code></pre></div>
<div>Is there any reason we don't have in Swift:</div>
<div>
<pre class="inbox-default inbox-prettyprint inbox-prettyprinted" style="margin-top:0px;padding:5px;border:0px;font-size:13px;width:auto;max-height:600px;overflow:auto;font-family:consolas,menlo,monaco,'lucida console','liberation mono','dejavu sans mono','bitstream vera sans mono','courier new',monospace,sans-serif;background-color:rgb(239,240,241);word-wrap:normal"><code style="color:rgb(57,51,24);margin:0px;padding:0px;border:0px;font-family:consolas,menlo,monaco,'lucida console','liberation mono','dejavu sans mono','bitstream vera sans mono','courier new',monospace,sans-serif;white-space:inherit"><span class="inbox-kwd" style="margin:0px;padding:0px;border:0px;color:rgb(16,16,148)">var</span><span class="inbox-pln" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)"> <span style="white-space:inherit">viewController</span></span></code><span class="inbox-pun" style="color:rgb(48,51,54);white-space:inherit;margin:0px;padding:0px;border:0px">:</span><span class="inbox-pln" style="color:rgb(48,51,54);white-space:inherit;margin:0px;padding:0px;border:0px"> </span><span class="inbox-pln" style="white-space:inherit;margin:0px;padding:0px;border:0px"><font color="#2B91AF">UViewController</font></span><span class="inbox-inbox-pun" style="white-space:inherit;margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">&lt;</span><span class="inbox-inbox-typ" style="white-space:inherit;margin:0px;padding:0px;border:0px;color:rgb(43,145,175)">Protocol1</span><span class="inbox-inbox-pun" style="white-space:inherit;margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">,</span><span class="inbox-inbox-pln" style="white-space:inherit;margin:0px;padding:0px;border:0px;color:rgb(48,51,54)"> </span><span class="inbox-inbox-typ" style="white-space:inherit;margin:0px;padding:0px;border:0px;color:rgb(43,145,175)">Protocol2</span><span class="inbox-inbox-pun" style="white-space:inherit;margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">,</span><span class="inbox-inbox-pln" style="white-space:inherit;margin:0px;padding:0px;border:0px;color:rgb(48,51,54)"> </span><span class="inbox-inbox-pun" style="white-space:inherit;margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">...&gt;</span></pre></div>
<div>Do you think it will be nice feature to have in Swift?</div>
<div>One example I have is is to have VC's container with view
controllers(some forms) which implement Validable protocol to
enforce them to have implementation of this method and to prevent
situation that there is somewhere default implementation of the
method "isValid" e.g. in superclass or protocol extension.</div>
<div>What are your thoughts?</div>
<div><br></div>
<div>Cheers,</div>
<div>Adrian</div>
</div>


_______________________________________________<br>swift-evolution mailing list<br>swift-evolution@swift.org<br>https://lists.swift.org/mailman/listinfo/swift-evolution<br></div></div></span></blockquote></div><div class="bloop_markdown"><p></p></div></body></html>