<div class="chatlog__message-group">
  <div id="chatlog__message-container-418637511250935810" class="chatlog__message-container" data-message-id="418637511250935810">
    <div class="chatlog__message">
      <div class="chatlog__message-aside"><img class="chatlog__avatar" src="https://cdn.discordapp.com/avatars/127674083331538944/4893b43ea9ee2231b8ffb8b05c305ce3.png?size=512" alt="Avatar" loading="lazy"></div>
      <div class="chatlog__message-primary">
        <div class="chatlog__header"><span class="chatlog__author" style="color:rgb(155,89,182)" title="norio_nomura" data-user-id="127674083331538944">norio_nomura</span> <a href="/channels/306995750418513920?category=main&amp;channel=swift-2&amp;message_id=418637511250935810"><span class="chatlog__timestamp" title="Thursday, March 1, 2018 5:16 AM"></span></a><a href="#chatlog__message-container-418637511250935810">3/1/2018 5:16 AM</a></div>
        <div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">Swift 4.1でメソッドオーバーロードの判定が賢くなってた。 <code class="chatlog__markdown-pre chatlog__markdown-pre--multiline language-swift">protocol P1 { init() } protocol P2 { init() } struct S { func a&lt;T: P1&gt;(_ type: T.Type) -&gt; T { return a(type) ?? type.init() } private func a&lt;T&gt;(_ type: T.Type) -&gt; T? { guard let p2Type = type as? P2.Type else { return nil } return p2Type.init() as? T } } extension Int: P1 {} S().a(Int.self) // Swift 4.1より前は無限ループ</code></span></div>
      </div>
    </div>
  </div>
</div>