title: Tuple.Create return type
body: <p>Given</p>
  
  <pre><code>void foo(Tuple&lt;object&gt; t)
  {
  
  }
  void bar()
  {
      foo(Tuple.Create("hello"));
  }
  </code></pre>
  
  <p>the c# compiler returns</p>
  
  <pre><code>error CS1502: The best overloaded method match for 'foo(System.Tuple&lt;object&gt;)' has some invalid arguments
  error CS1503: Argument 1: cannot convert from 'System.Tuple&lt;string&gt;' to 'System.Tuple&lt;object&gt;'
  </code></pre>
  
  <p>Adding explicit types to Tuple.Create defeats its purpose.  How can I convince the compiler to accept the code?</p>
  
  <p>FWIW, I think C++ doesn't have this problem: <a href="http://live.boost.org/doc/libs/1_33_1/libs/tuple/doc/tuple_users_guide.html#constructing_tuples" rel="nofollow">http://live.boost.org/doc/libs/1_33_1/libs/tuple/doc/tuple_users_guide.html#constructing_tuples</a></p>