title: Initialize integer literal to std::size_t
body: <p>There are known ways to manipulate the type of an integer literal</p>
  
  <pre><code>0L;  // long
  3U;  // unsigned integer
  1LL; // long long
  </code></pre>
  
  <p>What I need is a way to initialize an integer literal to <code>std::size_t</code>. I supposed that doing </p>
  
  <pre><code>2U; // unsigned int
  </code></pre>
  
  <p>would be enough, but I still get a compiler error when calling a function template that expects two arguments of the same integral type (no matching function to call for <code>func(unsigned int, size_t</code>)</p>
  
  <p>I know/verified that explicitly casting ( <code>static_cast&lt;std::size_t&gt;(1)</code> ) the first argument solves the problem but I'm asking if there's a prettier solution</p>
  
  <p><strong>EDIT</strong></p>
  
  <p>the function has a signature </p>
  
  <pre><code>template &lt;class T&gt; const T&amp; func(const T&amp; a, const T&amp; b);
  </code></pre>
  
  <p><strong>EDIT2</strong></p>
  
  <p>I don't know if this question is to "blame" but I'm happy to announce that <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4254.html" rel="noreferrer">this is upcoming</a> (cudos @malat for mentioning this in the comments)</p>