title: Operator '?' cannot be applied to operand of type 'T' (2)
body: <p>I came across a weird behavior of C# compiler (VS 2015).
  In the code bellow, compiler is happy with Value2, but complains about Value1: Operator '?' cannot be applied to operand of type 'T'</p>
  
  <p>Why?</p>
  
  <pre><code>public interface IValueProvider&lt;T&gt;
  {
      T Value { get; }
  }
  
  class Validator&lt;T&gt;
  {
      public Validator(IValueProvider&lt;T&gt; provider)
      {
          _valueProvider = provider;
      }
  
      public T Value1 =&gt; _valueProvider?.Value ?? default(T);
  
      public T Value2 =&gt; _valueProvider != null ? _valueProvider.Value : default(T);
  
      private readonly IValueProvider&lt;T&gt; _valueProvider;
  }
  </code></pre>