title: Problem with boost ublas matrix product
body: <p>I'm trying to use the ublas part of Boost but I'm not able to multiply matrices and assign the result to other matrices for some reason. </p>
  
  <p>This works:</p>
  
  <pre><code>#include &lt;boost/numeric/ublas/symmetric.hpp&gt;
  #include &lt;boost/numeric/ublas/io.hpp&gt;
  
  using namespace boost::numeric::ublas;
  
  typedef symmetric_matrix&lt;int,lower&gt; symatrix;
  
  int main() {
    int N = 10;
    symatrix foo(N,N);
    for (int i = 0; i &lt; N; i++)
      for(int j = 0; j &lt;= i; j++) {
        foo(i,j) = i - j + 1;
      }
    symatrix goo(foo);
    //goo = prod(foo,foo);
    std::cout &lt;&lt; prod(foo,foo)&lt;&lt; std::endl;
  
  }
  </code></pre>
  
  <p>But if I uncomment the line <code>goo = prod(foo,foo);</code> or try something like:</p>
  
  <pre><code>symatrix goo = prod(foo,foo);
  </code></pre>
  
  <p>I get a runtime error I can't decipher. </p>
  
  <pre><code>Check failed in file /usr/include/boost/numeric/ublas/detail/matrix_assign.hpp at line 761:
  detail::expression_type_check (m, cm)
  terminate called after throwing an instance of 'boost::numeric::ublas::external_logic'
    what():  external logic
  Aborted
  </code></pre>
  
  <p>How do I multiply matrices and assign the result?</p>