title: Swift 4: Non-nominal type 'T' does not support explicit initialization
body: <p>I've written an extension that searches a <code>Collection</code> for an object of a certain type.</p>
  
  <pre><code>extension Collection {
      /// Finds and returns the first element matching the specified type or nil.
      func findType&lt;T&gt;(_ type: T.Type) -&gt; Iterator.Element? {
          if let index = (index { (element: Iterator.Element) in
              String(describing: type(of: element)) == String(describing: type) }) {
              return self[index]
          }
          return nil
      }
  }
  </code></pre>
  
  <p>Now in Xcode 9 / Swift 4, the snippet <code>type(of: element))</code> is underlined with error </p>
  
  <blockquote>
    <p>Non-nominal type 'T' does not support explicit initialization</p>
  </blockquote>
  
  <p>The error is strange because I'm not initializing an object.</p>
  
  <p>This answer <a href="https://stackoverflow.com/a/46114847/2854041">https://stackoverflow.com/a/46114847/2854041</a> suggests that perhaps it's a type issue - did the String(describing:) initializer change in Swift 4?</p>