title: error: expected primary-expression before 'float'
body: <p>I am having some odd behavior from two of my functions. both are erroring when they are getting called in the build process. I am not to sure what it is I am missing as everything looks fine to me but that is obviously not the case.</p>
  
  <p>First line with the error:</p>
  
  <pre><code>matf4x4 perspective = perspective(m_fov, m_aspect, m_near, m_far); // ERROR (1)
  </code></pre>
  
  <p>Perspective function definition:</p>
  
  <pre><code>static mat4x4&lt;float&gt; perspective(float fov, float aspect, float n, float f) {
      float q = 1.0f / tanf(radians(0.5f * fov));
      float A = q / aspect;
      float B = (n + f) / (n - f);
      float C = (2.0f * n * f) / (n - f);
  
      mat4x4&lt;float&gt; result;
  
      result[0] = vec4f(A, 0.0f, 0.0f, 0.0f);
      result[1] = vec4f(0.0f, q, 0.0f, 0.0f);
      result[2] = vec4f(0.0f, 0.0f, B, -1.0f);
      result[3] = vec4f(0.0f, 0.0f, C, 0.0f);
  
      return result;
  }
  </code></pre>
  
  <p>ERROR (1) output:</p>
  
  <pre><code>C:\Users\Matt\CLionProjects\SkyGames\Engine\Camera\Camera.cpp:18:66: error: no match for call to '(sky::matf4x4 {aka sky::mat4x4&lt;float&gt;}) (float&amp;, float&amp;, float&amp;, float&amp;)'
    matf4x4 perspective = perspective(m_fov, m_aspect, m_near, m_far);
  </code></pre>
  
  <p>Second line with error:</p>
  
  <pre><code>matf4x4 lookat = lookat&lt;float&gt;(m_position, centre, m_up); // ERROR (2)
  </code></pre>
  
  <p>Lookat function definition:</p>
  
  <pre><code>template &lt;typename T&gt;
  static mat4x4&lt;T&gt; lookat(const vec3&lt;T&gt;&amp; eye, const vec3&lt;T&gt;&amp; centre, const vec3&lt;T&gt;&amp; up) {
      vec3&lt;T&gt; f = normalize(centre - eye);
      vec3&lt;T&gt; upN = normalize(up);
      vec3&lt;T&gt; s = cross(f, upN);
      vec3&lt;T&gt; u = cross(s, f);
      mat4x4&lt;T&gt; M = mat4x4&lt;T&gt;(vec4&lt;T&gt;(s[0], u[0], -f[0], T(0)),
                              vec4&lt;T&gt;(s[1], u[1], -f[1], T(0)),
                              vec4&lt;T&gt;(s[2], u[2], -f[2], T(0)),
                              vec4&lt;T&gt;(T(0), T(0), T(0), T(1)));
      return M * translate&lt;T&gt;(-eye);
  }
  </code></pre>
  
  <p>Matrix 4x4 float with operator overload =</p>
  
  <pre><code>mat4x4&lt;T&gt;&amp;operator=(const mat4x4&lt;T&gt;&amp; mat) {
      for (int i = 0; i &lt; m_width; ++i)
          matrix[i] = mat.matrix[i];
      return *this;
  }
  </code></pre>
  
  <p>ERROR(2) output:</p>
  
  <pre><code>C:\Users\Matt\CLionProjects\SkyGames\Engine\Camera\Camera.cpp:20:26: error: expected primary-expression before 'float'
    matf4x4 lookat = lookat&lt;float&gt;(m_position, centre, m_up);
  </code></pre>