title: std::uniform_int_distribution<int> range in g++ and msvc
body: <p>While doing a minor school project, I just noticed a difference in the
  range of <code>std::uniform_int_distribution&lt;int&gt;</code>:</p>
  
  <p>When using g++ the range is [a, b], however when using msvc (Visual Studio 2010) the range is (a, b], so the output of the following program:</p>
  
  <pre><code>#include &lt;iostream&gt;
  #include &lt;random&gt;
  
  using std::cout;
  using std::cin;
  
  int main()
  {
      std::mt19937 random;
      std::uniform_int_distribution&lt;int&gt; intDist(-1, 1);
  
      for(int i = 0; i &lt; 100; i++)
      {
          cout &lt;&lt; intDist(random) &lt;&lt; "\n";
      }
  
      cin.get();
  }
  </code></pre>
  
  <p>Will display -1 at some point when using g++, but it will never display -1 when using msvc.</p>
  
  <p>I know is common that such differences exists between compilers, but booth the MSDN documentation and the standard mark that the range should be [a, b].</p>
  
  <p>What is the reason for this behavior?</p>