title: Operator '?' cannot be applied to operand of type 'T'
body: <p>Trying to make <code>Feature</code> generic and then suddenly compiler said</p>
  
  <blockquote>
    <p><strong>Operator '?' cannot be applied to operand of type 'T'</strong></p>
  </blockquote>
  
  <p>Here is the code</p>
  
  <pre><code>public abstract class Feature&lt;T&gt;
  {
      public T Value
      {
          get { return GetValue?.Invoke(); } // here is error
          set { SetValue?.Invoke(value); }
      }
  
      public Func&lt;T&gt; GetValue { get; set; }
      public Action&lt;T&gt; SetValue { get; set; }
  }
  </code></pre>
  
  <p>It is possible to use this code instead</p>
  
  <pre><code>get
  {
      if (GetValue != null)
          return GetValue();
      return default(T);
  }
  </code></pre>
  
  <p>But I am wondering how to fix that nice C# 6.0 one-liner.</p>