title: "Never" Type as Default Type for Multi-Generic Initialization
body: <h3>Problem</h3>
  <p>My goal is to somehow initialize a generic object similar to this:</p>
  <pre><code>struct SomeStruct&lt;A, B&gt; where A: View, B: View {
      let a: A?
      let b: B?
      
      init(a: A? = nil, b: B? = nil) {
          self.a = a
          self.b = b
      }
  }
  
  let someStruct: SomeStruct = .init(a: Color.red)
  </code></pre>
  <p>However, this snippet throws an error:</p>
  <pre><code>Generic Parameter 'B' Couldn't Be Inferred
  </code></pre>
  <h3>Alternative #1: Diamond Notation</h3>
  <p>One alternative would be specifying <code>Never</code> type in a diamond notation:</p>
  <pre><code>let someStruct: SomeStruct&lt;Color, Never&gt; = .init(a: Color.red)
  </code></pre>
  <p>But this is a clunky solution as I don't want to pass types explicitly.</p>
  <h3>Alternative #2: Constrained Initializers</h3>
  <p>Another wordy alternative is writing custom initializers, omitting each type by specifying <code>Never</code> type:</p>
  <pre><code>struct SomeStruct&lt;A, B&gt; where A: View, B: View {
      let a: A?
      let b: B?
  }
  
  extension SomeStruct where A == Never {
      init(b: B) {
          self.a = nil
          self.b = b
      }
  }
  
  extension SomeStruct where B == Never {
      init(a: A) {
          self.a = a
          self.b = nil
      }
  }
  
  extension SomeStruct where A == Never, B == Never {
      init() {
          self.a = nil
          self.b = nil
      }
  }
  
  let someStruct: SomeStruct = .init(a: Color.red)
  </code></pre>
  <p>But as you can see, this requires a lot of repetitive code. So if I have an object of 10 generic types, this can become a mess.</p>
  <h3>Question</h3>
  <p>In short, I am looking for a way to retain a simple initializer, as shown in Problem section. Is there a way to provide a default type to a parameter (<code>Never</code>), as you would usually provide a default value to that parameter?.</p>