title: Strange Eigen map behavior with zero stride
body: <p>From <a href="https://eigen.tuxfamily.org/dox/classEigen_1_1Stride.html" rel="nofollow noreferrer">Eigen::Stride</a> docs:</p>
  
  <blockquote>
    <p>The inner stride is the pointer increment between two consecutive
    entries within a given row of a row-major matrix or within a given
    column of a column-major matrix.</p>
    
    <p>The outer stride is the pointer increment between two consecutive rows
    of a row-major matrix or between two consecutive columns of a
    column-major matrix.</p>
  </blockquote>
  
  <p>Let say I want to create a matrix that consists repeated vector as a row. In python numpy I can use zero length stride to do this. Eigen docs say nothing about zero strides but behavior looks very strange:</p>
  
  <pre><code>typedef Matrix&lt;float, Dynamic, Dynamic, RowMajor&gt; MatrixType;
  
  MatrixType M1(3, 3);
  M1 &lt;&lt; 1, 2, 3,
        4, 5, 6,
        7, 8, 9;
  
  Map&lt;MatrixType, 0, Stride&lt;0, 0&gt;&gt; zeroMap(M1.data(), 2, 2);  
  Map&lt;MatrixType, 0, Stride&lt;2, 0&gt;&gt; oneMap(M1.data(), 2, 2);  
  
  cout &lt;&lt; "Row stride = 0:" &lt;&lt; "\n";
  cout &lt;&lt; zeroMap &lt;&lt; "\n" &lt;&lt; "Row stride = 2:" &lt;&lt; "\n";
  cout &lt;&lt; oneMap;
  cout &lt;&lt; "\n";
  </code></pre>
  
  <p>Returns the same result in both cases:</p>
  
  <pre><code>Row stride = 0:
  1 2
  3 4
  Row stride = 2:
  1 2
  3 4
  </code></pre>
  
  <p>Why are results the same with stride 0 and stride 2? </p>