In file included from main.cpp:10:
projectiles.h: In member function ‘virtual void fragment::move(int)’:
projectiles.h:87:57: error: no match for ‘operator*’ (operand types are ‘__gnu_cxx::__alloc_traits<std::allocator<glm::vec<3, float, glm::packed_highp> >, glm::vec<3, float, glm::packed_highp> >::value_type’ {aka ‘glm::vec<3, float, glm::packed_highp>’} and ‘int’)
   87 |                         locations[i] += trajectories[i] * elapsed_time/1000.0f;
In file included from /usr/include/glm/detail/type_vec2.hpp:398,
                 from /usr/include/glm/ext/vector_bool2.hpp:5,
                 from /usr/include/glm/vec2.hpp:5,
                 from /usr/include/glm/glm.hpp:116,
                 from game.h:8,
                 from main.cpp:7:
/usr/include/glm/detail/type_vec2.inl:557:55: note: candidate: ‘template<class T, glm::qualifier Q> constexpr glm::vec<2, T, Q> glm::operator*(const glm::vec<2, T, Q>&, T)’
  557 |         GLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<2, T, Q> operator*(vec<2, T, Q> const& v, T scalar)
      |                                                       ^~~~~~~~
/usr/include/glm/detail/type_vec2.inl:557:55: note:   template argument deduction/substitution failed:
In file included from main.cpp:10:
projectiles.h:87:59: note:   template argument ‘3’ does not match ‘2’
   87 |                         locations[i] += trajectories[i] * elapsed_time/1000.0f;
      |                                                           ^~~~~~~~~~~~
In file included from /usr/include/glm/detail/type_vec2.hpp:398,
                 from /usr/include/glm/ext/vector_bool2.hpp:5,
                 from /usr/include/glm/vec2.hpp:5,
                 from /usr/include/glm/glm.hpp:116,
                 from game.h:8,
                 from main.cpp:7:
/usr/include/glm/detail/type_vec2.inl:565:55: note: candidate: ‘template<class T, glm::qualifier Q> constexpr glm::vec<2, T, Q> glm::operator*(const glm::vec<2, T, Q>&, const glm::vec<1, T, Q>&)’
  565 |         GLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<2, T, Q> operator*(vec<2, T, Q> const& v1, vec<1, T, Q> const& v2)
      |                                                       ^~~~~~~~
/usr/include/glm/detail/type_vec2.inl:565:55: note:   template argument deduction/substitution failed:
In file included from main.cpp:10:
projectiles.h:87:59: note:   template argument ‘3’ does not match ‘2’
   87 |                         locations[i] += trajectories[i] * elapsed_time/1000.0f;
      |                                                           ^~~~~~~~~~~~
In file included from /usr/include/glm/detail/type_vec2.hpp:398,
                 from /usr/include/glm/ext/vector_bool2.hpp:5,
                 from /usr/include/glm/vec2.hpp:5,
                 from /usr/include/glm/glm.hpp:116,
                 from game.h:8,
                 from main.cpp:7:
/usr/include/glm/detail/type_vec2.inl:573:55: note: candidate: ‘template<class T, glm::qualifier Q> constexpr glm::vec<2, T, Q> glm::operator*(T, const glm::vec<2, T, Q>&)’
  573 |         GLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<2, T, Q> operator*(T scalar, vec<2, T, Q> const& v)
      |                                                       ^~~~~~~~
/usr/include/glm/detail/type_vec2.inl:573:55: note:   template argument deduction/substitution failed:
In file included from main.cpp:10:
projectiles.h:87:59: note:   mismatched types ‘const glm::vec<2, T, Q>’ and ‘int’
   87 |                         locations[i] += trajectories[i] * elapsed_time/1000.0f;
      |                                                           ^~~~~~~~~~~~
In file included from /usr/include/glm/detail/type_vec2.hpp:398,
                 from /usr/include/glm/ext/vector_bool2.hpp:5,
                 from /usr/include/glm/vec2.hpp:5,
                 from /usr/include/glm/glm.hpp:116,
                 from game.h:8,
                 from main.cpp:7:
/usr/include/glm/detail/type_vec2.inl:581:55: note: candidate: ‘template<class T, glm::qualifier Q> constexpr glm::vec<2, T, Q> glm::operator*(const glm::vec<1, T, Q>&, const glm::vec<2, T, Q>&)’
  581 |         GLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<2, T, Q> operator*(vec<1, T, Q> const& v1, vec<2, T, Q> const& v2)
      |                                                       ^~~~~~~~
/usr/include/glm/detail/type_vec2.inl:581:55: note:   template argument deduction/substitution failed:
In file included from main.cpp:10:
projectiles.h:87:59: note:   template argument ‘3’ does not match ‘1’
   87 |                         locations[i] += trajectories[i] * elapsed_time/1000.0f;
      |                                                           ^~~~~~~~~~~~
In file included from /usr/include/glm/detail/type_vec2.hpp:398,
                 from /usr/include/glm/ext/vector_bool2.hpp:5,
                 from /usr/include/glm/vec2.hpp:5,
                 from /usr/include/glm/glm.hpp:116,
                 from game.h:8,
                 from main.cpp:7:
/usr/include/glm/detail/type_vec2.inl:589:55: note: candidate: ‘template<class T, glm::qualifier Q> constexpr glm::vec<2, T, Q> glm::operator*(const glm::vec<2, T, Q>&, const glm::vec<2, T, Q>&)’
  589 |         GLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<2, T, Q> operator*(vec<2, T, Q> const& v1, vec<2, T, Q> const& v2)
      |                                                       ^~~~~~~~
/usr/include/glm/detail/type_vec2.inl:589:55: note:   template argument deduction/substitution failed:
In file included from main.cpp:10:
projectiles.h:87:59: note:   template argument ‘3’ does not match ‘2’
   87 |                         locations[i] += trajectories[i] * elapsed_time/1000.0f;
      |                                                           ^~~~~~~~~~~~
In file included from /usr/include/glm/detail/type_vec3.hpp:431,
                 from /usr/include/glm/ext/vector_bool3.hpp:5,
                 from /usr/include/glm/vec3.hpp:5,
                 from /usr/include/glm/glm.hpp:117,
                 from game.h:8,
                 from main.cpp:7:
/usr/include/glm/detail/type_vec3.inl:670:55: note: candidate: ‘template<class T, glm::qualifier Q> constexpr glm::vec<3, T, Q> glm::operator*(const glm::vec<3, T, Q>&, T)’
  670 |         GLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q> operator*(vec<3, T, Q> const& v, T scalar)
      |                                                       ^~~~~~~~
/usr/include/glm/detail/type_vec3.inl:670:55: note:   template argument deduction/substitution failed:
In file included from main.cpp:10:
projectiles.h:87:59: note:   deduced conflicting types for parameter ‘T’ (‘float’ and ‘int’)
   87 |                         locations[i] += trajectories[i] * elapsed_time/1000.0f;
      |                                                           ^~~~~~~~~~~~
In file included from /usr/include/glm/detail/type_vec3.hpp:431,
                 from /usr/include/glm/ext/vector_bool3.hpp:5,
                 from /usr/include/glm/vec3.hpp:5,
                 from /usr/include/glm/glm.hpp:117,
                 from game.h:8,
                 from main.cpp:7:
/usr/include/glm/detail/type_vec3.inl:679:55: note: candidate: ‘template<class T, glm::qualifier Q> constexpr glm::vec<3, T, Q> glm::operator*(const glm::vec<3, T, Q>&, const glm::vec<1, T, Q>&)’
  679 |         GLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q> operator*(vec<3, T, Q> const& v, vec<1, T, Q> const& scalar)
      |                                                       ^~~~~~~~
/usr/include/glm/detail/type_vec3.inl:679:55: note:   template argument deduction/substitution failed:
In file included from main.cpp:10:
projectiles.h:87:59: note:   mismatched types ‘const glm::vec<1, T, Q>’ and ‘int’
   87 |                         locations[i] += trajectories[i] * elapsed_time/1000.0f;
      |                                                           ^~~~~~~~~~~~
In file included from /usr/include/glm/detail/type_vec3.hpp:431,
                 from /usr/include/glm/ext/vector_bool3.hpp:5,
                 from /usr/include/glm/vec3.hpp:5,
                 from /usr/include/glm/glm.hpp:117,
                 from game.h:8,
                 from main.cpp:7:
/usr/include/glm/detail/type_vec3.inl:688:55: note: candidate: ‘template<class T, glm::qualifier Q> constexpr glm::vec<3, T, Q> glm::operator*(T, const glm::vec<3, T, Q>&)’
  688 |         GLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q> operator*(T scalar, vec<3, T, Q> const& v)
      |                                                       ^~~~~~~~
/usr/include/glm/detail/type_vec3.inl:688:55: note:   template argument deduction/substitution failed:
In file included from main.cpp:10:
projectiles.h:87:59: note:   mismatched types ‘const glm::vec<3, T, Q>’ and ‘int’
   87 |                         locations[i] += trajectories[i] * elapsed_time/1000.0f;
      |                                                           ^~~~~~~~~~~~
In file included from /usr/include/glm/detail/type_vec3.hpp:431,
                 from /usr/include/glm/ext/vector_bool3.hpp:5,
                 from /usr/include/glm/vec3.hpp:5,
                 from /usr/include/glm/glm.hpp:117,
                 from game.h:8,
                 from main.cpp:7:
/usr/include/glm/detail/type_vec3.inl:697:55: note: candidate: ‘template<class T, glm::qualifier Q> constexpr glm::vec<3, T, Q> glm::operator*(const glm::vec<1, T, Q>&, const glm::vec<3, T, Q>&)’
  697 |         GLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q> operator*(vec<1, T, Q> const& scalar, vec<3, T, Q> const& v)
      |                                                       ^~~~~~~~
/usr/include/glm/detail/type_vec3.inl:697:55: note:   template argument deduction/substitution failed:
In file included from main.cpp:10:
projectiles.h:87:59: note:   template argument ‘3’ does not match ‘1’
   87 |                         locations[i] += trajectories[i] * elapsed_time/1000.0f;
      |                                                           ^~~~~~~~~~~~
In file included from /usr/include/glm/detail/type_vec3.hpp:431,
                 from /usr/include/glm/ext/vector_bool3.hpp:5,
                 from /usr/include/glm/vec3.hpp:5,
                 from /usr/include/glm/glm.hpp:117,
                 from game.h:8,
                 from main.cpp:7:
/usr/include/glm/detail/type_vec3.inl:706:55: note: candidate: ‘template<class T, glm::qualifier Q> constexpr glm::vec<3, T, Q> glm::operator*(const glm::vec<3, T, Q>&, const glm::vec<3, T, Q>&)’
  706 |         GLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q> operator*(vec<3, T, Q> const& v1, vec<3, T, Q> const& v2)
      |                                                       ^~~~~~~~
/usr/include/glm/detail/type_vec3.inl:706:55: note:   template argument deduction/substitution failed:
In file included from main.cpp:10:
projectiles.h:87:59: note:   mismatched types ‘const glm::vec<3, T, Q>’ and ‘int’
   87 |                         locations[i] += trajectories[i] * elapsed_time/1000.0f;
      |                                                           ^~~~~~~~~~~~
In file included from /usr/include/glm/detail/type_vec4.hpp:504,
                 from /usr/include/glm/ext/vector_bool4.hpp:5,
                 from /usr/include/glm/vec4.hpp:5,
                 from /usr/include/glm/glm.hpp:118,
                 from game.h:8,
                 from main.cpp:7:
/usr/include/glm/detail/type_vec4.inl:864:55: note: candidate: ‘template<class T, glm::qualifier Q> constexpr glm::vec<4, T, Q> glm::operator*(const glm::vec<4, T, Q>&, const T&)’
  864 |         GLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q> operator*(vec<4, T, Q> const& v, T const & scalar)
      |                                                       ^~~~~~~~
/usr/include/glm/detail/type_vec4.inl:864:55: note:   template argument deduction/substitution failed:
In file included from main.cpp:10:
projectiles.h:87:59: note:   template argument ‘3’ does not match ‘4’
   87 |                         locations[i] += trajectories[i] * elapsed_time/1000.0f;
      |                                                           ^~~~~~~~~~~~
In file included from /usr/include/glm/detail/type_vec4.hpp:504,
                 from /usr/include/glm/ext/vector_bool4.hpp:5,
                 from /usr/include/glm/vec4.hpp:5,
                 from /usr/include/glm/glm.hpp:118,
                 from game.h:8,
                 from main.cpp:7:
/usr/include/glm/detail/type_vec4.inl:870:55: note: candidate: ‘template<class T, glm::qualifier Q> constexpr glm::vec<4, T, Q> glm::operator*(const glm::vec<4, T, Q>&, const glm::vec<1, T, Q>&)’
  870 |         GLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q> operator*(vec<4, T, Q> const& v1, vec<1, T, Q> const& v2)
      |                                                       ^~~~~~~~
/usr/include/glm/detail/type_vec4.inl:870:55: note:   template argument deduction/substitution failed:
In file included from main.cpp:10:
projectiles.h:87:59: note:   template argument ‘3’ does not match ‘4’
   87 |                         locations[i] += trajectories[i] * elapsed_time/1000.0f;
      |                                                           ^~~~~~~~~~~~
In file included from /usr/include/glm/detail/type_vec4.hpp:504,
                 from /usr/include/glm/ext/vector_bool4.hpp:5,
                 from /usr/include/glm/vec4.hpp:5,
                 from /usr/include/glm/glm.hpp:118,
                 from game.h:8,
                 from main.cpp:7:
/usr/include/glm/detail/type_vec4.inl:876:55: note: candidate: ‘template<class T, glm::qualifier Q> constexpr glm::vec<4, T, Q> glm::operator*(T, const glm::vec<4, T, Q>&)’
  876 |         GLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q> operator*(T scalar, vec<4, T, Q> const& v)
      |                                                       ^~~~~~~~
/usr/include/glm/detail/type_vec4.inl:876:55: note:   template argument deduction/substitution failed:
In file included from main.cpp:10:
projectiles.h:87:59: note:   mismatched types ‘const glm::vec<4, T, Q>’ and ‘int’
   87 |                         locations[i] += trajectories[i] * elapsed_time/1000.0f;
      |                                                           ^~~~~~~~~~~~
In file included from /usr/include/glm/detail/type_vec4.hpp:504,
                 from /usr/include/glm/ext/vector_bool4.hpp:5,
                 from /usr/include/glm/vec4.hpp:5,
                 from /usr/include/glm/glm.hpp:118,
                 from game.h:8,
                 from main.cpp:7:
/usr/include/glm/detail/type_vec4.inl:882:55: note: candidate: ‘template<class T, glm::qualifier Q> constexpr glm::vec<4, T, Q> glm::operator*(const glm::vec<1, T, Q>&, const glm::vec<4, T, Q>&)’
  882 |         GLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q> operator*(vec<1, T, Q> const& v1, vec<4, T, Q> const& v2)
      |                                                       ^~~~~~~~
/usr/include/glm/detail/type_vec4.inl:882:55: note:   template argument deduction/substitution failed:
In file included from main.cpp:10:
projectiles.h:87:59: note:   template argument ‘3’ does not match ‘1’
   87 |                         locations[i] += trajectories[i] * elapsed_time/1000.0f;
      |                                                           ^~~~~~~~~~~~
In file included from /usr/include/glm/detail/type_vec4.hpp:504,
                 from /usr/include/glm/ext/vector_bool4.hpp:5,
                 from /usr/include/glm/vec4.hpp:5,
                 from /usr/include/glm/glm.hpp:118,
                 from game.h:8,
                 from main.cpp:7:
/usr/include/glm/detail/type_vec4.inl:888:55: note: candidate: ‘template<class T, glm::qualifier Q> constexpr glm::vec<4, T, Q> glm::operator*(const glm::vec<4, T, Q>&, const glm::vec<4, T, Q>&)’
  888 |         GLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q> operator*(vec<4, T, Q> const& v1, vec<4, T, Q> const& v2)
      |                                                       ^~~~~~~~
/usr/include/glm/detail/type_vec4.inl:888:55: note:   template argument deduction/substitution failed:
In file included from main.cpp:10:
projectiles.h:87:59: note:   template argument ‘3’ does not match ‘4’
   87 |                         locations[i] += trajectories[i] * elapsed_time/1000.0f;
      |                                                           ^~~~~~~~~~~~
In file included from /usr/include/glm/detail/type_mat2x2.hpp:176,
                 from /usr/include/glm/ext/matrix_double2x2.hpp:5,
                 from /usr/include/glm/mat2x2.hpp:5,
                 from /usr/include/glm/glm.hpp:119,
                 from game.h:8,
                 from main.cpp:7:
/usr/include/glm/detail/type_mat2x2.inl:413:44: note: candidate: ‘template<class T, glm::qualifier Q> glm::mat<2, 2, T, Q> glm::operator*(const glm::mat<2, 2, T, Q>&, T)’
  413 |         GLM_FUNC_QUALIFIER mat<2, 2, T, Q> operator*(mat<2, 2, T, Q> const& m, T scalar)
      |                                            ^~~~~~~~
/usr/include/glm/detail/type_mat2x2.inl:413:44: note:   template argument deduction/substitution failed:
In file included from main.cpp:10:
projectiles.h:87:59: note:   ‘__gnu_cxx::__alloc_traits<std::allocator<glm::vec<3, float, glm::packed_highp> >, glm::vec<3, float, glm::packed_highp> >::value_type’ {aka ‘glm::vec<3, float, glm::packed_highp>’} is not derived from ‘const glm::mat<2, 2, T, Q>’
   87 |                         locations[i] += trajectories[i] * elapsed_time/1000.0f;
      |                                                           ^~~~~~~~~~~~
In file included from /usr/include/glm/detail/type_mat2x2.hpp:176,
                 from /usr/include/glm/ext/matrix_double2x2.hpp:5,
                 from /usr/include/glm/mat2x2.hpp:5,
                 from /usr/include/glm/glm.hpp:119,
                 from game.h:8,
                 from main.cpp:7:
/usr/include/glm/detail/type_mat2x2.inl:421:44: note: candidate: ‘template<class T, glm::qualifier Q> glm::mat<2, 2, T, Q> glm::operator*(T, const glm::mat<2, 2, T, Q>&)’
  421 |         GLM_FUNC_QUALIFIER mat<2, 2, T, Q> operator*(T scalar, mat<2, 2, T, Q> const& m)
      |                                            ^~~~~~~~
/usr/include/glm/detail/type_mat2x2.inl:421:44: note:   template argument deduction/substitution failed:
In file included from main.cpp:10:
projectiles.h:87:59: note:   mismatched types ‘const glm::mat<2, 2, T, Q>’ and ‘int’
   87 |                         locations[i] += trajectories[i] * elapsed_time/1000.0f;
      |                                                           ^~~~~~~~~~~~
In file included from /usr/include/glm/detail/type_mat2x2.hpp:176,
                 from /usr/include/glm/ext/matrix_double2x2.hpp:5,
                 from /usr/include/glm/mat2x2.hpp:5,
                 from /usr/include/glm/glm.hpp:119,
                 from game.h:8,
                 from main.cpp:7:
/usr/include/glm/detail/type_mat2x2.inl:429:63: note: candidate: ‘template<class T, glm::qualifier Q> typename glm::mat<2, 2, T, Q>::col_type glm::operator*(const glm::mat<2, 2, T, Q>&, const typename glm::mat<2, 2, T, Q>::row_type&)’
  429 |         GLM_FUNC_QUALIFIER typename mat<2, 2, T, Q>::col_type operator*
      |                                                               ^~~~~~~~
/usr/include/glm/detail/type_mat2x2.inl:429:63: note:   template argument deduction/substitution failed:
In file included from main.cpp:10:
projectiles.h:87:59: note:   ‘__gnu_cxx::__alloc_traits<std::allocator<glm::vec<3, float, glm::packed_highp> >, glm::vec<3, float, glm::packed_highp> >::value_type’ {aka ‘glm::vec<3, float, glm::packed_highp>’} is not derived from ‘const glm::mat<2, 2, T, Q>’
   87 |                         locations[i] += trajectories[i] * elapsed_time/1000.0f;
      |                                                           ^~~~~~~~~~~~
In file included from /usr/include/glm/detail/type_mat2x2.hpp:176,
                 from /usr/include/glm/ext/matrix_double2x2.hpp:5,
                 from /usr/include/glm/mat2x2.hpp:5,
                 from /usr/include/glm/glm.hpp:119,
                 from game.h:8,
                 from main.cpp:7:
/usr/include/glm/detail/type_mat2x2.inl:441:63: note: candidate: ‘template<class T, glm::qualifier Q> typename glm::mat<2, 2, T, Q>::row_type glm::operator*(const typename glm::mat<2, 2, T, Q>::col_type&, const glm::mat<2, 2, T, Q>&)’
  441 |         GLM_FUNC_QUALIFIER typename mat<2, 2, T, Q>::row_type operator*
      |                                                               ^~~~~~~~
/usr/include/glm/detail/type_mat2x2.inl:441:63: note:   template argument deduction/substitution failed:
In file included from main.cpp:10:
projectiles.h:87:59: note:   mismatched types ‘const glm::mat<2, 2, T, Q>’ and ‘int’
   87 |                         locations[i] += trajectories[i] * elapsed_time/1000.0f;
      |                                                           ^~~~~~~~~~~~
In file included from /usr/include/glm/detail/type_mat2x2.hpp:176,
                 from /usr/include/glm/ext/matrix_double2x2.hpp:5,
                 from /usr/include/glm/mat2x2.hpp:5,
                 from /usr/include/glm/glm.hpp:119,
                 from game.h:8,
                 from main.cpp:7:
/usr/include/glm/detail/type_mat2x2.inl:453:44: note: candidate: ‘template<class T, glm::qualifier Q> glm::mat<2, 2, T, Q> glm::operator*(const glm::mat<2, 2, T, Q>&, const glm::mat<2, 2, T, Q>&)’
  453 |         GLM_FUNC_QUALIFIER mat<2, 2, T, Q> operator*(mat<2, 2, T, Q> const& m1, mat<2, 2, T, Q> const& m2)
      |                                            ^~~~~~~~
/usr/include/glm/detail/type_mat2x2.inl:453:44: note:   template argument deduction/substitution failed:
In file included from main.cpp:10:
projectiles.h:87:59: note:   ‘__gnu_cxx::__alloc_traits<std::allocator<glm::vec<3, float, glm::packed_highp> >, glm::vec<3, float, glm::packed_highp> >::value_type’ {aka ‘glm::vec<3, float, glm::packed_highp>’} is not derived from ‘const glm::mat<2, 2, T, Q>’
   87 |                         locations[i] += trajectories[i] * elapsed_time/1000.0f;
      |                                                           ^~~~~~~~~~~~
In file included from /usr/include/glm/detail/type_mat2x2.hpp:176,
                 from /usr/include/glm/ext/matrix_double2x2.hpp:5,
                 from /usr/include/glm/mat2x2.hpp:5,
                 from /usr/include/glm/glm.hpp:119,
                 from game.h:8,
                 from main.cpp:7:
/usr/include/glm/detail/type_mat2x2.inl:463:44: note: candidate: ‘template<class T, glm::qualifier Q> glm::mat<3, 2, T, Q> glm::operator*(const glm::mat<2, 2, T, Q>&, const glm::mat<3, 2, T, Q>&)’
  463 |         GLM_FUNC_QUALIFIER mat<3, 2, T, Q> operator*(mat<2, 2, T, Q> const& m1, mat<3, 2, T, Q> const& m2)
      |                                            ^~~~~~~~
/usr/include/glm/detail/type_mat2x2.inl:463:44: note:   template argument deduction/substitution failed:
In file included from main.cpp:10:
projectiles.h:87:59: note:   ‘__gnu_cxx::__alloc_traits<std::allocator<glm::vec<3, float, glm::packed_highp> >, glm::vec<3, float, glm::packed_highp> >::value_type’ {aka ‘glm::vec<3, float, glm::packed_highp>’} is not derived from ‘const glm::mat<2, 2, T, Q>’
   87 |                         locations[i] += trajectories[i] * elapsed_time/1000.0f;
      |                                                           ^~~~~~~~~~~~
In file included from /usr/include/glm/detail/type_mat2x2.hpp:176,
                 from /usr/include/glm/ext/matrix_double2x2.hpp:5,
                 from /usr/include/glm/mat2x2.hpp:5,
                 from /usr/include/glm/glm.hpp:119,
                 from game.h:8,
                 from main.cpp:7:
/usr/include/glm/detail/type_mat2x2.inl:475:44: note: candidate: ‘template<class T, glm::qualifier Q> glm::mat<4, 2, T, Q> glm::operator*(const glm::mat<2, 2, T, Q>&, const glm::mat<4, 2, T, Q>&)’
  475 |         GLM_FUNC_QUALIFIER mat<4, 2, T, Q> operator*(mat<2, 2, T, Q> const& m1, mat<4, 2, T, Q> const& m2)
      |                                            ^~~~~~~~
/usr/include/glm/detail/type_mat2x2.inl:475:44: note:   template argument deduction/substitution failed:
In file included from main.cpp:10:
projectiles.h:87:59: note:   ‘__gnu_cxx::__alloc_traits<std::allocator<glm::vec<3, float, glm::packed_highp> >, glm::vec<3, float, glm::packed_highp> >::value_type’ {aka ‘glm::vec<3, float, glm::packed_highp>’} is not derived from ‘const glm::mat<2, 2, T, Q>’
   87 |                         locations[i] += trajectories[i] * elapsed_time/1000.0f;
      |                                                           ^~~~~~~~~~~~
In file included from /usr/include/glm/detail/type_mat2x3.hpp:158,
                 from /usr/include/glm/ext/matrix_double2x3.hpp:5,
                 from /usr/include/glm/mat2x3.hpp:5,
                 from /usr/include/glm/matrix.hpp:22,
                 from /usr/include/glm/detail/type_mat2x2.inl:1,
                 from /usr/include/glm/detail/type_mat2x2.hpp:176,
                 from /usr/include/glm/ext/matrix_double2x2.hpp:5,
                 from /usr/include/glm/mat2x2.hpp:5,
                 from /usr/include/glm/glm.hpp:119,
                 from game.h:8,
                 from main.cpp:7:
/usr/include/glm/detail/type_mat2x3.inl:383:44: note: candidate: ‘template<class T, glm::qualifier Q> glm::mat<2, 3, T, Q> glm::operator*(const glm::mat<2, 3, T, Q>&, T)’
  383 |         GLM_FUNC_QUALIFIER mat<2, 3, T, Q> operator*(mat<2, 3, T, Q> const& m, T scalar)
      |                                            ^~~~~~~~
/usr/include/glm/detail/type_mat2x3.inl:383:44: note:   template argument deduction/substitution failed:
In file included from main.cpp:10:
projectiles.h:87:59: note:   ‘__gnu_cxx::__alloc_traits<std::allocator<glm::vec<3, float, glm::packed_highp> >, glm::vec<3, float, glm::packed_highp> >::value_type’ {aka ‘glm::vec<3, float, glm::packed_highp>’} is not derived from ‘const glm::mat<2, 3, T, Q>’
   87 |                         locations[i] += trajectories[i] * elapsed_time/1000.0f;
      |                                                           ^~~~~~~~~~~~
In file included from /usr/include/glm/detail/type_mat2x3.hpp:158,
                 from /usr/include/glm/ext/matrix_double2x3.hpp:5,
                 from /usr/include/glm/mat2x3.hpp:5,
                 from /usr/include/glm/matrix.hpp:22,
                 from /usr/include/glm/detail/type_mat2x2.inl:1,
                 from /usr/include/glm/detail/type_mat2x2.hpp:176,
                 from /usr/include/glm/ext/matrix_double2x2.hpp:5,
                 from /usr/include/glm/mat2x2.hpp:5,
                 from /usr/include/glm/glm.hpp:119,
                 from game.h:8,
                 from main.cpp:7:
/usr/include/glm/detail/type_mat2x3.inl:391:44: note: candidate: ‘template<class T, glm::qualifier Q> glm::mat<2, 3, T, Q> glm::operator*(T, const glm::mat<2, 3, T, Q>&)’
  391 |         GLM_FUNC_QUALIFIER mat<2, 3, T, Q> operator*(T scalar, mat<2, 3, T, Q> const& m)
      |                                            ^~~~~~~~
/usr/include/glm/detail/type_mat2x3.inl:391:44: note:   template argument deduction/substitution failed:
In file included from main.cpp:10:
projectiles.h:87:59: note:   mismatched types ‘const glm::mat<2, 3, T, Q>’ and ‘int’
   87 |                         locations[i] += trajectories[i] * elapsed_time/1000.0f;
      |                                                           ^~~~~~~~~~~~
In file included from /usr/include/glm/detail/type_mat2x3.hpp:158,
                 from /usr/include/glm/ext/matrix_double2x3.hpp:5,
                 from /usr/include/glm/mat2x3.hpp:5,
                 from /usr/include/glm/matrix.hpp:22,
                 from /usr/include/glm/detail/type_mat2x2.inl:1,
                 from /usr/include/glm/detail/type_mat2x2.hpp:176,
                 from /usr/include/glm/ext/matrix_double2x2.hpp:5,
                 from /usr/include/glm/mat2x2.hpp:5,
                 from /usr/include/glm/glm.hpp:119,
                 from game.h:8,
                 from main.cpp:7:
/usr/include/glm/detail/type_mat2x3.inl:399:63: note: candidate: ‘template<class T, glm::qualifier Q> typename glm::mat<2, 3, T, Q>::col_type glm::operator*(const glm::mat<2, 3, T, Q>&, const typename glm::mat<2, 3, T, Q>::row_type&)’
  399 |         GLM_FUNC_QUALIFIER typename mat<2, 3, T, Q>::col_type operator*
      |                                                               ^~~~~~~~
/usr/include/glm/detail/type_mat2x3.inl:399:63: note:   template argument deduction/substitution failed:
In file included from main.cpp:10:
projectiles.h:87:59: note:   ‘__gnu_cxx::__alloc_traits<std::allocator<glm::vec<3, float, glm::packed_highp> >, glm::vec<3, float, glm::packed_highp> >::value_type’ {aka ‘glm::vec<3, float, glm::packed_highp>’} is not derived from ‘const glm::mat<2, 3, T, Q>’
   87 |                         locations[i] += trajectories[i] * elapsed_time/1000.0f;
      |                                                           ^~~~~~~~~~~~
In file included from /usr/include/glm/detail/type_mat2x3.hpp:158,
                 from /usr/include/glm/ext/matrix_double2x3.hpp:5,
                 from /usr/include/glm/mat2x3.hpp:5,
                 from /usr/include/glm/matrix.hpp:22,
                 from /usr/include/glm/detail/type_mat2x2.inl:1,
                 from /usr/include/glm/detail/type_mat2x2.hpp:176,
                 from /usr/include/glm/ext/matrix_double2x2.hpp:5,
                 from /usr/include/glm/mat2x2.hpp:5,
                 from /usr/include/glm/glm.hpp:119,
                 from game.h:8,
                 from main.cpp:7:
/usr/include/glm/detail/type_mat2x3.inl:411:63: note: candidate: ‘template<class T, glm::qualifier Q> typename glm::mat<2, 3, T, Q>::row_type glm::operator*(const typename glm::mat<2, 3, T, Q>::col_type&, const glm::mat<2, 3, T, Q>&)’
  411 |         GLM_FUNC_QUALIFIER typename mat<2, 3, T, Q>::row_type operator*
      |                                                               ^~~~~~~~
/usr/include/glm/detail/type_mat2x3.inl:411:63: note:   template argument deduction/substitution failed:
In file included from main.cpp:10:
projectiles.h:87:59: note:   mismatched types ‘const glm::mat<2, 3, T, Q>’ and ‘int’
   87 |                         locations[i] += trajectories[i] * elapsed_time/1000.0f;
      |                                                           ^~~~~~~~~~~~
In file included from /usr/include/glm/detail/type_mat2x3.hpp:158,
                 from /usr/include/glm/ext/matrix_double2x3.hpp:5,
                 from /usr/include/glm/mat2x3.hpp:5,
                 from /usr/include/glm/matrix.hpp:22,
                 from /usr/include/glm/detail/type_mat2x2.inl:1,
                 from /usr/include/glm/detail/type_mat2x2.hpp:176,
                 from /usr/include/glm/ext/matrix_double2x2.hpp:5,
                 from /usr/include/glm/mat2x2.hpp:5,
                 from /usr/include/glm/glm.hpp:119,
                 from game.h:8,
                 from main.cpp:7:
/usr/include/glm/detail/type_mat2x3.inl:422:44: note: candidate: ‘template<class T, glm::qualifier Q> glm::mat<2, 3, T, Q> glm::operator*(const glm::mat<2, 3, T, Q>&, const glm::mat<2, 2, T, Q>&)’
  422 |         GLM_FUNC_QUALIFIER mat<2, 3, T, Q> operator*(mat<2, 3, T, Q> const& m1, mat<2, 2, T, Q> const& m2)
      |                                            ^~~~~~~~
/usr/include/glm/detail/type_mat2x3.inl:422:44: note:   template argument deduction/substitution failed:
In file included from main.cpp:10:
projectiles.h:87:59: note:   ‘__gnu_cxx::__alloc_traits<std::allocator<glm::vec<3, float, glm::packed_highp> >, glm::vec<3, float, glm::packed_highp> >::value_type’ {aka ‘glm::vec<3, float, glm::packed_highp>’} is not derived from ‘const glm::mat<2, 3, T, Q>’
   87 |                         locations[i] += trajectories[i] * elapsed_time/1000.0f;
      |                                                           ^~~~~~~~~~~~
In file included from /usr/include/glm/detail/type_mat2x3.hpp:158,
                 from /usr/include/glm/ext/matrix_double2x3.hpp:5,
                 from /usr/include/glm/mat2x3.hpp:5,
                 from /usr/include/glm/matrix.hpp:22,
                 from /usr/include/glm/detail/type_mat2x2.inl:1,
                 from /usr/include/glm/detail/type_mat2x2.hpp:176,
                 from /usr/include/glm/ext/matrix_double2x2.hpp:5,
                 from /usr/include/glm/mat2x2.hpp:5,
                 from /usr/include/glm/glm.hpp:119,
                 from game.h:8,
                 from main.cpp:7:
/usr/include/glm/detail/type_mat2x3.inl:434:44: note: candidate: ‘template<class T, glm::qualifier Q> glm::mat<3, 3, T, Q> glm::operator*(const glm::mat<2, 3, T, Q>&, const glm::mat<3, 2, T, Q>&)’
  434 |         GLM_FUNC_QUALIFIER mat<3, 3, T, Q> operator*(mat<2, 3, T, Q> const& m1, mat<3, 2, T, Q> const& m2)
      |                                            ^~~~~~~~
/usr/include/glm/detail/type_mat2x3.inl:434:44: note:   template argument deduction/substitution failed:
In file included from main.cpp:10:
projectiles.h:87:59: note:   ‘__gnu_cxx::__alloc_traits<std::allocator<glm::vec<3, float, glm::packed_highp> >, glm::vec<3, float, glm::packed_highp> >::value_type’ {aka ‘glm::vec<3, float, glm::packed_highp>’} is not derived from ‘const glm::mat<2, 3, T, Q>’
   87 |                         locations[i] += trajectories[i] * elapsed_time/1000.0f;
      |                                                           ^~~~~~~~~~~~
In file included from /usr/include/glm/detail/type_mat2x3.hpp:158,
                 from /usr/include/glm/ext/matrix_double2x3.hpp:5,
                 from /usr/include/glm/mat2x3.hpp:5,
                 from /usr/include/glm/matrix.hpp:22,
                 from /usr/include/glm/detail/type_mat2x2.inl:1,
                 from /usr/include/glm/detail/type_mat2x2.hpp:176,
                 from /usr/include/glm/ext/matrix_double2x2.hpp:5,
                 from /usr/include/glm/mat2x2.hpp:5,
                 from /usr/include/glm/glm.hpp:119,
                 from game.h:8,
                 from main.cpp:7:
/usr/include/glm/detail/type_mat2x3.inl:464:44: note: candidate: ‘template<class T, glm::qualifier Q> glm::mat<4, 3, T, Q> glm::operator*(const glm::mat<2, 3, T, Q>&, const glm::mat<4, 2, T, Q>&)’
  464 |         GLM_FUNC_QUALIFIER mat<4, 3, T, Q> operator*(mat<2, 3, T, Q> const& m1, mat<4, 2, T, Q> const& m2)
      |                                            ^~~~~~~~
/usr/include/glm/detail/type_mat2x3.inl:464:44: note:   template argument deduction/substitution failed:
In file included from main.cpp:10:
projectiles.h:87:59: note:   ‘__gnu_cxx::__alloc_traits<std::allocator<glm::vec<3, float, glm::packed_highp> >, glm::vec<3, float, glm::packed_highp> >::value_type’ {aka ‘glm::vec<3, float, glm::packed_highp>’} is not derived from ‘const glm::mat<2, 3, T, Q>’
   87 |                         locations[i] += trajectories[i] * elapsed_time/1000.0f;
      |                                                           ^~~~~~~~~~~~
In file included from /usr/include/glm/detail/type_mat2x4.hpp:160,
                 from /usr/include/glm/ext/matrix_double2x4.hpp:5,
                 from /usr/include/glm/mat2x4.hpp:5,
                 from /usr/include/glm/matrix.hpp:23,
                 from /usr/include/glm/detail/type_mat2x2.inl:1,
                 from /usr/include/glm/detail/type_mat2x2.hpp:176,
                 from /usr/include/glm/ext/matrix_double2x2.hpp:5,
                 from /usr/include/glm/mat2x2.hpp:5,
                 from /usr/include/glm/glm.hpp:119,
                 from game.h:8,
                 from main.cpp:7:
/usr/include/glm/detail/type_mat2x4.inl:385:44: note: candidate: ‘template<class T, glm::qualifier Q> glm::mat<2, 4, T, Q> glm::operator*(const glm::mat<2, 4, T, Q>&, T)’
  385 |         GLM_FUNC_QUALIFIER mat<2, 4, T, Q> operator*(mat<2, 4, T, Q> const& m, T scalar)
      |                                            ^~~~~~~~
/usr/include/glm/detail/type_mat2x4.inl:385:44: note:   template argument deduction/substitution failed:
In file included from main.cpp:10:
projectiles.h:87:59: note:   ‘__gnu_cxx::__alloc_traits<std::allocator<glm::vec<3, float, glm::packed_highp> >, glm::vec<3, float, glm::packed_highp> >::value_type’ {aka ‘glm::vec<3, float, glm::packed_highp>’} is not derived from ‘const glm::mat<2, 4, T, Q>’
   87 |                         locations[i] += trajectories[i] * elapsed_time/1000.0f;
      |                                                           ^~~~~~~~~~~~
In file included from /usr/include/glm/detail/type_mat2x4.hpp:160,
                 from /usr/include/glm/ext/matrix_double2x4.hpp:5,
                 from /usr/include/glm/mat2x4.hpp:5,
                 from /usr/include/glm/matrix.hpp:23,
                 from /usr/include/glm/detail/type_mat2x2.inl:1,
                 from /usr/include/glm/detail/type_mat2x2.hpp:176,
                 from /usr/include/glm/ext/matrix_double2x2.hpp:5,
                 from /usr/include/glm/mat2x2.hpp:5,
                 from /usr/include/glm/glm.hpp:119,
                 from game.h:8,
                 from main.cpp:7:
/usr/include/glm/detail/type_mat2x4.inl:393:44: note: candidate: ‘template<class T, glm::qualifier Q> glm::mat<2, 4, T, Q> glm::operator*(T, const glm::mat<2, 4, T, Q>&)’
  393 |         GLM_FUNC_QUALIFIER mat<2, 4, T, Q> operator*(T scalar, mat<2, 4, T, Q> const& m)
      |                                            ^~~~~~~~
/usr/include/glm/detail/type_mat2x4.inl:393:44: note:   template argument deduction/substitution failed:
In file included from main.cpp:10:
projectiles.h:87:59: note:   mismatched types ‘const glm::mat<2, 4, T, Q>’ and ‘int’
   87 |                         locations[i] += trajectories[i] * elapsed_time/1000.0f;
      |                                                           ^~~~~~~~~~~~
In file included from /usr/include/glm/detail/type_mat2x4.hpp:160,
                 from /usr/include/glm/ext/matrix_double2x4.hpp:5,
                 from /usr/include/glm/mat2x4.hpp:5,
                 from /usr/include/glm/matrix.hpp:23,
                 from /usr/include/glm/detail/type_mat2x2.inl:1,
                 from /usr/include/glm/detail/type_mat2x2.hpp:176,
                 from /usr/include/glm/ext/matrix_double2x2.hpp:5,
                 from /usr/include/glm/mat2x2.hpp:5,
                 from /usr/include/glm/glm.hpp:119,
                 from game.h:8,
                 from main.cpp:7:
/usr/include/glm/detail/type_mat2x4.inl:401:63: note: candidate: ‘template<class T, glm::qualifier Q> typename glm::mat<2, 4, T, Q>::col_type glm::operator*(const glm::mat<2, 4, T, Q>&, const typename glm::mat<2, 4, T, Q>::row_type&)’
  401 |         GLM_FUNC_QUALIFIER typename mat<2, 4, T, Q>::col_type operator*(mat<2, 4, T, Q> const& m, typename mat<2, 4, T, Q>::row_type const& v)
      |                                                               ^~~~~~~~
/usr/include/glm/detail/type_mat2x4.inl:401:63: note:   template argument deduction/substitution failed:
In file included from main.cpp:10:
projectiles.h:87:59: note:   ‘__gnu_cxx::__alloc_traits<std::allocator<glm::vec<3, float, glm::packed_highp> >, glm::vec<3, float, glm::packed_highp> >::value_type’ {aka ‘glm::vec<3, float, glm::packed_highp>’} is not derived from ‘const glm::mat<2, 4, T, Q>’
   87 |                         locations[i] += trajectories[i] * elapsed_time/1000.0f;
      |                                                           ^~~~~~~~~~~~
In file included from /usr/include/glm/detail/type_mat2x4.hpp:160,
                 from /usr/include/glm/ext/matrix_double2x4.hpp:5,
                 from /usr/include/glm/mat2x4.hpp:5,
                 from /usr/include/glm/matrix.hpp:23,
                 from /usr/include/glm/detail/type_mat2x2.inl:1,
                 from /usr/include/glm/detail/type_mat2x2.hpp:176,
                 from /usr/include/glm/ext/matrix_double2x2.hpp:5,
                 from /usr/include/glm/mat2x2.hpp:5,
                 from /usr/include/glm/glm.hpp:119,
                 from game.h:8,
                 from main.cpp:7:
/usr/include/glm/detail/type_mat2x4.inl:411:63: note: candidate: ‘template<class T, glm::qualifier Q> typename glm::mat<2, 4, T, Q>::row_type glm::operator*(const typename glm::mat<2, 4, T, Q>::col_type&, const glm::mat<2, 4, T, Q>&)’
  411 |         GLM_FUNC_QUALIFIER typename mat<2, 4, T, Q>::row_type operator*(typename mat<2, 4, T, Q>::col_type const& v, mat<2, 4, T, Q> const& m)
      |                                                               ^~~~~~~~
/usr/include/glm/detail/type_mat2x4.inl:411:63: note:   template argument deduction/substitution failed:
In file included from main.cpp:10:
projectiles.h:87:59: note:   mismatched types ‘const glm::mat<2, 4, T, Q>’ and ‘int’
   87 |                         locations[i] += trajectories[i] * elapsed_time/1000.0f;
      |                                                           ^~~~~~~~~~~~
In file included from /usr/include/glm/detail/type_mat2x4.hpp:160,
                 from /usr/include/glm/ext/matrix_double2x4.hpp:5,
                 from /usr/include/glm/mat2x4.hpp:5,
                 from /usr/include/glm/matrix.hpp:23,
                 from /usr/include/glm/detail/type_mat2x2.inl:1,
                 from /usr/include/glm/detail/type_mat2x2.hpp:176,
                 from /usr/include/glm/ext/matrix_double2x2.hpp:5,
                 from /usr/include/glm/mat2x2.hpp:5,
                 from /usr/include/glm/glm.hpp:119,
                 from game.h:8,
                 from main.cpp:7:
/usr/include/glm/detail/type_mat2x4.inl:419:44: note: candidate: ‘template<class T, glm::qualifier Q> glm::mat<4, 4, T, Q> glm::operator*(const glm::mat<2, 4, T, Q>&, const glm::mat<4, 2, T, Q>&)’
  419 |         GLM_FUNC_QUALIFIER mat<4, 4, T, Q> operator*(mat<2, 4, T, Q> const& m1, mat<4, 2, T, Q> const& m2)
      |                                            ^~~~~~~~
/usr/include/glm/detail/type_mat2x4.inl:419:44: note:   template argument deduction/substitution failed:
In file included from main.cpp:10:
projectiles.h:87:59: note:   ‘__gnu_cxx::__alloc_traits<std::allocator<glm::vec<3, float, glm::packed_highp> >, glm::vec<3, float, glm::packed_highp> >::value_type’ {aka ‘glm::vec<3, float, glm::packed_highp>’} is not derived from ‘const glm::mat<2, 4, T, Q>’
   87 |                         locations[i] += trajectories[i] * elapsed_time/1000.0f;
      |                                                           ^~~~~~~~~~~~
In file included from /usr/include/glm/detail/type_mat2x4.hpp:160,
                 from /usr/include/glm/ext/matrix_double2x4.hpp:5,
                 from /usr/include/glm/mat2x4.hpp:5,
                 from /usr/include/glm/matrix.hpp:23,
                 from /usr/include/glm/detail/type_mat2x2.inl:1,
                 from /usr/include/glm/detail/type_mat2x2.hpp:176,
                 from /usr/include/glm/ext/matrix_double2x2.hpp:5,
                 from /usr/include/glm/mat2x2.hpp:5,
                 from /usr/include/glm/glm.hpp:119,
                 from game.h:8,
                 from main.cpp:7:
/usr/include/glm/detail/type_mat2x4.inl:460:44: note: candidate: ‘template<class T, glm::qualifier Q> glm::mat<2, 4, T, Q> glm::operator*(const glm::mat<2, 4, T, Q>&, const glm::mat<2, 2, T, Q>&)’
  460 |         GLM_FUNC_QUALIFIER mat<2, 4, T, Q> operator*(mat<2, 4, T, Q> const& m1, mat<2, 2, T, Q> const& m2)
      |                                            ^~~~~~~~
/usr/include/glm/detail/type_mat2x4.inl:460:44: note:   template argument deduction/substitution failed:
In file included from main.cpp:10:
projectiles.h:87:59: note:   ‘__gnu_cxx::__alloc_traits<std::allocator<glm::vec<3, float, glm::packed_highp> >, glm::vec<3, float, glm::packed_highp> >::value_type’ {aka ‘glm::vec<3, float, glm::packed_highp>’} is not derived from ‘const glm::mat<2, 4, T, Q>’
   87 |                         locations[i] += trajectories[i] * elapsed_time/1000.0f;
      |                                                           ^~~~~~~~~~~~
In file included from /usr/include/glm/detail/type_mat2x4.hpp:160,
                 from /usr/include/glm/ext/matrix_double2x4.hpp:5,
                 from /usr/include/glm/mat2x4.hpp:5,
                 from /usr/include/glm/matrix.hpp:23,
                 from /usr/include/glm/detail/type_mat2x2.inl:1,
                 from /usr/include/glm/detail/type_mat2x2.hpp:176,
                 from /usr/include/glm/ext/matrix_double2x2.hpp:5,
                 from /usr/include/glm/mat2x2.hpp:5,
                 from /usr/include/glm/glm.hpp:119,
                 from game.h:8,
                 from main.cpp:7:
/usr/include/glm/detail/type_mat2x4.inl:474:44: note: candidate: ‘template<class T, glm::qualifier Q> glm::mat<3, 4, T, Q> glm::operator*(const glm::mat<2, 4, T, Q>&, const glm::mat<3, 2, T, Q>&)’
  474 |         GLM_FUNC_QUALIFIER mat<3, 4, T, Q> operator*(mat<2, 4, T, Q> const& m1, mat<3, 2, T, Q> const& m2)
      |                                            ^~~~~~~~
/usr/include/glm/detail/type_mat2x4.inl:474:44: note:   template argument deduction/substitution failed:
In file included from main.cpp:10:
projectiles.h:87:59: note:   ‘__gnu_cxx::__alloc_traits<std::allocator<glm::vec<3, float, glm::packed_highp> >, glm::vec<3, float, glm::packed_highp> >::value_type’ {aka ‘glm::vec<3, float, glm::packed_highp>’} is not derived from ‘const glm::mat<2, 4, T, Q>’
   87 |                         locations[i] += trajectories[i] * elapsed_time/1000.0f;
      |                                                           ^~~~~~~~~~~~
In file included from /usr/include/glm/detail/type_mat3x2.hpp:166,
                 from /usr/include/glm/ext/matrix_double3x2.hpp:5,
                 from /usr/include/glm/mat3x2.hpp:5,
                 from /usr/include/glm/matrix.hpp:24,
                 from /usr/include/glm/detail/type_mat2x2.inl:1,
                 from /usr/include/glm/detail/type_mat2x2.hpp:176,
                 from /usr/include/glm/ext/matrix_double2x2.hpp:5,
                 from /usr/include/glm/mat2x2.hpp:5,
                 from /usr/include/glm/glm.hpp:119,
                 from game.h:8,
                 from main.cpp:7:
/usr/include/glm/detail/type_mat3x2.inl:416:44: note: candidate: ‘template<class T, glm::qualifier Q> glm::mat<3, 2, T, Q> glm::operator*(const glm::mat<3, 2, T, Q>&, T)’
  416 |         GLM_FUNC_QUALIFIER mat<3, 2, T, Q> operator*(mat<3, 2, T, Q> const& m, T scalar)
      |                                            ^~~~~~~~
/usr/include/glm/detail/type_mat3x2.inl:416:44: note:   template argument deduction/substitution failed:
In file included from main.cpp:10:
projectiles.h:87:59: note:   ‘__gnu_cxx::__alloc_traits<std::allocator<glm::vec<3, float, glm::packed_highp> >, glm::vec<3, float, glm::packed_highp> >::value_type’ {aka ‘glm::vec<3, float, glm::packed_highp>’} is not derived from ‘const glm::mat<3, 2, T, Q>’
   87 |                         locations[i] += trajectories[i] * elapsed_time/1000.0f;
      |                                                           ^~~~~~~~~~~~
In file included from /usr/include/glm/detail/type_mat3x2.hpp:166,
                 from /usr/include/glm/ext/matrix_double3x2.hpp:5,
                 from /usr/include/glm/mat3x2.hpp:5,
                 from /usr/include/glm/matrix.hpp:24,
                 from /usr/include/glm/detail/type_mat2x2.inl:1,
                 from /usr/include/glm/detail/type_mat2x2.hpp:176,
                 from /usr/include/glm/ext/matrix_double2x2.hpp:5,
                 from /usr/include/glm/mat2x2.hpp:5,
                 from /usr/include/glm/glm.hpp:119,
                 from game.h:8,
                 from main.cpp:7:
/usr/include/glm/detail/type_mat3x2.inl:425:44: note: candidate: ‘template<class T, glm::qualifier Q> glm::mat<3, 2, T, Q> glm::operator*(T, const glm::mat<3, 2, T, Q>&)’
  425 |         GLM_FUNC_QUALIFIER mat<3, 2, T, Q> operator*(T scalar, mat<3, 2, T, Q> const& m)
      |                                            ^~~~~~~~
/usr/include/glm/detail/type_mat3x2.inl:425:44: note:   template argument deduction/substitution failed:
In file included from main.cpp:10:
projectiles.h:87:59: note:   mismatched types ‘const glm::mat<3, 2, T, Q>’ and ‘int’
   87 |                         locations[i] += trajectories[i] * elapsed_time/1000.0f;
      |                                                           ^~~~~~~~~~~~
In file included from /usr/include/glm/detail/type_mat3x2.hpp:166,
                 from /usr/include/glm/ext/matrix_double3x2.hpp:5,
                 from /usr/include/glm/mat3x2.hpp:5,
                 from /usr/include/glm/matrix.hpp:24,
                 from /usr/include/glm/detail/type_mat2x2.inl:1,
                 from /usr/include/glm/detail/type_mat2x2.hpp:176,
                 from /usr/include/glm/ext/matrix_double2x2.hpp:5,
                 from /usr/include/glm/mat2x2.hpp:5,
                 from /usr/include/glm/glm.hpp:119,
                 from game.h:8,
                 from main.cpp:7:
/usr/include/glm/detail/type_mat3x2.inl:434:63: note: candidate: ‘template<class T, glm::qualifier Q> typename glm::mat<3, 2, T, Q>::col_type glm::operator*(const glm::mat<3, 2, T, Q>&, const typename glm::mat<3, 2, T, Q>::row_type&)’
  434 |         GLM_FUNC_QUALIFIER typename mat<3, 2, T, Q>::col_type operator*(mat<3, 2, T, Q> const& m, typename mat<3, 2, T, Q>::row_type const& v)
      |                                                               ^~~~~~~~
/usr/include/glm/detail/type_mat3x2.inl:434:63: note:   template argument deduction/substitution failed:
In file included from main.cpp:10:
projectiles.h:87:59: note:   ‘__gnu_cxx::__alloc_traits<std::allocator<glm::vec<3, float, glm::packed_highp> >, glm::vec<3, float, glm::packed_highp> >::value_type’ {aka ‘glm::vec<3, float, glm::packed_highp>’} is not derived from ‘const glm::mat<3, 2, T, Q>’
   87 |                         locations[i] += trajectories[i] * elapsed_time/1000.0f;
      |                                                           ^~~~~~~~~~~~
In file included from /usr/include/glm/detail/type_mat3x2.hpp:166,
                 from /usr/include/glm/ext/matrix_double3x2.hpp:5,
                 from /usr/include/glm/mat3x2.hpp:5,
                 from /usr/include/glm/matrix.hpp:24,
                 from /usr/include/glm/detail/type_mat2x2.inl:1,
                 from /usr/include/glm/detail/type_mat2x2.hpp:176,
                 from /usr/include/glm/ext/matrix_double2x2.hpp:5,
                 from /usr/include/glm/mat2x2.hpp:5,
                 from /usr/include/glm/glm.hpp:119,
                 from game.h:8,
                 from main.cpp:7:
/usr/include/glm/detail/type_mat3x2.inl:442:63: note: candidate: ‘template<class T, glm::qualifier Q> typename glm::mat<3, 2, T, Q>::row_type glm::operator*(const typename glm::mat<3, 2, T, Q>::col_type&, const glm::mat<3, 2, T, Q>&)’
  442 |         GLM_FUNC_QUALIFIER typename mat<3, 2, T, Q>::row_type operator*(typename mat<3, 2, T, Q>::col_type const& v, mat<3, 2, T, Q> const& m)
      |                                                               ^~~~~~~~
/usr/include/glm/detail/type_mat3x2.inl:442:63: note:   template argument deduction/substitution failed:
In file included from main.cpp:10:
projectiles.h:87:59: note:   mismatched types ‘const glm::mat<3, 2, T, Q>’ and ‘int’
   87 |                         locations[i] += trajectories[i] * elapsed_time/1000.0f;
      |                                                           ^~~~~~~~~~~~
In file included from /usr/include/glm/detail/type_mat3x2.hpp:166,
                 from /usr/include/glm/ext/matrix_double3x2.hpp:5,
                 from /usr/include/glm/mat3x2.hpp:5,
                 from /usr/include/glm/matrix.hpp:24,
                 from /usr/include/glm/detail/type_mat2x2.inl:1,
                 from /usr/include/glm/detail/type_mat2x2.hpp:176,
                 from /usr/include/glm/ext/matrix_double2x2.hpp:5,
                 from /usr/include/glm/mat2x2.hpp:5,
                 from /usr/include/glm/glm.hpp:119,
                 from game.h:8,
                 from main.cpp:7:
/usr/include/glm/detail/type_mat3x2.inl:451:44: note: candidate: ‘template<class T, glm::qualifier Q> glm::mat<2, 2, T, Q> glm::operator*(const glm::mat<3, 2, T, Q>&, const glm::mat<2, 3, T, Q>&)’
  451 |         GLM_FUNC_QUALIFIER mat<2, 2, T, Q> operator*(mat<3, 2, T, Q> const& m1, mat<2, 3, T, Q> const& m2)
      |                                            ^~~~~~~~
/usr/include/glm/detail/type_mat3x2.inl:451:44: note:   template argument deduction/substitution failed:
In file included from main.cpp:10:
projectiles.h:87:59: note:   ‘__gnu_cxx::__alloc_traits<std::allocator<glm::vec<3, float, glm::packed_highp> >, glm::vec<3, float, glm::packed_highp> >::value_type’ {aka ‘glm::vec<3, float, glm::packed_highp>’} is not derived from ‘const glm::mat<3, 2, T, Q>’
   87 |                         locations[i] += trajectories[i] * elapsed_time/1000.0f;
      |                                                           ^~~~~~~~~~~~
In file included from /usr/include/glm/detail/type_mat3x2.hpp:166,
                 from /usr/include/glm/ext/matrix_double3x2.hpp:5,
                 from /usr/include/glm/mat3x2.hpp:5,
                 from /usr/include/glm/matrix.hpp:24,
                 from /usr/include/glm/detail/type_mat2x2.inl:1,
                 from /usr/include/glm/detail/type_mat2x2.hpp:176,
                 from /usr/include/glm/ext/matrix_double2x2.hpp:5,
                 from /usr/include/glm/mat2x2.hpp:5,
                 from /usr/include/glm/glm.hpp:119,
                 from game.h:8,
                 from main.cpp:7:
/usr/include/glm/detail/type_mat3x2.inl:476:44: note: candidate: ‘template<class T, glm::qualifier Q> glm::mat<3, 2, T, Q> glm::operator*(const glm::mat<3, 2, T, Q>&, const glm::mat<3, 3, T, Q>&)’
  476 |         GLM_FUNC_QUALIFIER mat<3, 2, T, Q> operator*(mat<3, 2, T, Q> const& m1, mat<3, 3, T, Q> const& m2)
      |                                            ^~~~~~~~
/usr/include/glm/detail/type_mat3x2.inl:476:44: note:   template argument deduction/substitution failed:
In file included from main.cpp:10:
projectiles.h:87:59: note:   ‘__gnu_cxx::__alloc_traits<std::allocator<glm::vec<3, float, glm::packed_highp> >, glm::vec<3, float, glm::packed_highp> >::value_type’ {aka ‘glm::vec<3, float, glm::packed_highp>’} is not derived from ‘const glm::mat<3, 2, T, Q>’
   87 |                         locations[i] += trajectories[i] * elapsed_time/1000.0f;
      |                                                           ^~~~~~~~~~~~
In file included from /usr/include/glm/detail/type_mat3x2.hpp:166,
                 from /usr/include/glm/ext/matrix_double3x2.hpp:5,
                 from /usr/include/glm/mat3x2.hpp:5,
                 from /usr/include/glm/matrix.hpp:24,
                 from /usr/include/glm/detail/type_mat2x2.inl:1,
                 from /usr/include/glm/detail/type_mat2x2.hpp:176,
                 from /usr/include/glm/ext/matrix_double2x2.hpp:5,
                 from /usr/include/glm/mat2x2.hpp:5,
                 from /usr/include/glm/glm.hpp:119,
                 from game.h:8,
                 from main.cpp:7:
/usr/include/glm/detail/type_mat3x2.inl:488:44: note: candidate: ‘template<class T, glm::qualifier Q> glm::mat<4, 2, T, Q> glm::operator*(const glm::mat<3, 2, T, Q>&, const glm::mat<4, 3, T, Q>&)’
  488 |         GLM_FUNC_QUALIFIER mat<4, 2, T, Q> operator*(mat<3, 2, T, Q> const& m1, mat<4, 3, T, Q> const& m2)
      |                                            ^~~~~~~~
/usr/include/glm/detail/type_mat3x2.inl:488:44: note:   template argument deduction/substitution failed:
In file included from main.cpp:10:
projectiles.h:87:59: note:   ‘__gnu_cxx::__alloc_traits<std::allocator<glm::vec<3, float, glm::packed_highp> >, glm::vec<3, float, glm::packed_highp> >::value_type’ {aka ‘glm::vec<3, float, glm::packed_highp>’} is not derived from ‘const glm::mat<3, 2, T, Q>’
   87 |                         locations[i] += trajectories[i] * elapsed_time/1000.0f;
      |                                                           ^~~~~~~~~~~~
In file included from /usr/include/glm/detail/type_mat3x3.hpp:183,
                 from /usr/include/glm/ext/matrix_double3x3.hpp:5,
                 from /usr/include/glm/mat3x3.hpp:5,
                 from /usr/include/glm/matrix.hpp:25,
                 from /usr/include/glm/detail/type_mat2x2.inl:1,
                 from /usr/include/glm/detail/type_mat2x2.hpp:176,
                 from /usr/include/glm/ext/matrix_double2x2.hpp:5,
                 from /usr/include/glm/mat2x2.hpp:5,
                 from /usr/include/glm/glm.hpp:119,
                 from game.h:8,
                 from main.cpp:7:
/usr/include/glm/detail/type_mat3x3.inl:450:44: note: candidate: ‘template<class T, glm::qualifier Q> glm::mat<3, 3, T, Q> glm::operator*(const glm::mat<3, 3, T, Q>&, T)’
  450 |         GLM_FUNC_QUALIFIER mat<3, 3, T, Q> operator*(mat<3, 3, T, Q> const& m, T scalar)
      |                                            ^~~~~~~~
/usr/include/glm/detail/type_mat3x3.inl:450:44: note:   template argument deduction/substitution failed:
In file included from main.cpp:10:
projectiles.h:87:59: note:   ‘__gnu_cxx::__alloc_traits<std::allocator<glm::vec<3, float, glm::packed_highp> >, glm::vec<3, float, glm::packed_highp> >::value_type’ {aka ‘glm::vec<3, float, glm::packed_highp>’} is not derived from ‘const glm::mat<3, 3, T, Q>’
   87 |                         locations[i] += trajectories[i] * elapsed_time/1000.0f;
      |                                                           ^~~~~~~~~~~~
In file included from /usr/include/glm/detail/type_mat3x3.hpp:183,
                 from /usr/include/glm/ext/matrix_double3x3.hpp:5,
                 from /usr/include/glm/mat3x3.hpp:5,
                 from /usr/include/glm/matrix.hpp:25,
                 from /usr/include/glm/detail/type_mat2x2.inl:1,
                 from /usr/include/glm/detail/type_mat2x2.hpp:176,
                 from /usr/include/glm/ext/matrix_double2x2.hpp:5,
                 from /usr/include/glm/mat2x2.hpp:5,
                 from /usr/include/glm/glm.hpp:119,
                 from game.h:8,
                 from main.cpp:7:
/usr/include/glm/detail/type_mat3x3.inl:459:44: note: candidate: ‘template<class T, glm::qualifier Q> glm::mat<3, 3, T, Q> glm::operator*(T, const glm::mat<3, 3, T, Q>&)’
  459 |         GLM_FUNC_QUALIFIER mat<3, 3, T, Q> operator*(T scalar, mat<3, 3, T, Q> const& m)
      |                                            ^~~~~~~~
/usr/include/glm/detail/type_mat3x3.inl:459:44: note:   template argument deduction/substitution failed:
In file included from main.cpp:10:
projectiles.h:87:59: note:   mismatched types ‘const glm::mat<3, 3, T, Q>’ and ‘int’
   87 |                         locations[i] += trajectories[i] * elapsed_time/1000.0f;
      |                                                           ^~~~~~~~~~~~
In file included from /usr/include/glm/detail/type_mat3x3.hpp:183,
                 from /usr/include/glm/ext/matrix_double3x3.hpp:5,
                 from /usr/include/glm/mat3x3.hpp:5,
                 from /usr/include/glm/matrix.hpp:25,
                 from /usr/include/glm/detail/type_mat2x2.inl:1,
                 from /usr/include/glm/detail/type_mat2x2.hpp:176,
                 from /usr/include/glm/ext/matrix_double2x2.hpp:5,
                 from /usr/include/glm/mat2x2.hpp:5,
                 from /usr/include/glm/glm.hpp:119,
                 from game.h:8,
                 from main.cpp:7:
/usr/include/glm/detail/type_mat3x3.inl:468:63: note: candidate: ‘template<class T, glm::qualifier Q> typename glm::mat<3, 3, T, Q>::col_type glm::operator*(const glm::mat<3, 3, T, Q>&, const typename glm::mat<3, 3, T, Q>::row_type&)’
  468 |         GLM_FUNC_QUALIFIER typename mat<3, 3, T, Q>::col_type operator*(mat<3, 3, T, Q> const& m, typename mat<3, 3, T, Q>::row_type const& v)
      |                                                               ^~~~~~~~
/usr/include/glm/detail/type_mat3x3.inl:468:63: note:   template argument deduction/substitution failed:
In file included from main.cpp:10:
projectiles.h:87:59: note:   ‘__gnu_cxx::__alloc_traits<std::allocator<glm::vec<3, float, glm::packed_highp> >, glm::vec<3, float, glm::packed_highp> >::value_type’ {aka ‘glm::vec<3, float, glm::packed_highp>’} is not derived from ‘const glm::mat<3, 3, T, Q>’
   87 |                         locations[i] += trajectories[i] * elapsed_time/1000.0f;
      |                                                           ^~~~~~~~~~~~
In file included from /usr/include/glm/detail/type_mat3x3.hpp:183,
                 from /usr/include/glm/ext/matrix_double3x3.hpp:5,
                 from /usr/include/glm/mat3x3.hpp:5,
                 from /usr/include/glm/matrix.hpp:25,
                 from /usr/include/glm/detail/type_mat2x2.inl:1,
                 from /usr/include/glm/detail/type_mat2x2.hpp:176,
                 from /usr/include/glm/ext/matrix_double2x2.hpp:5,
                 from /usr/include/glm/mat2x2.hpp:5,
                 from /usr/include/glm/glm.hpp:119,
                 from game.h:8,
                 from main.cpp:7:
/usr/include/glm/detail/type_mat3x3.inl:477:63: note: candidate: ‘template<class T, glm::qualifier Q> typename glm::mat<3, 3, T, Q>::row_type glm::operator*(const typename glm::mat<3, 3, T, Q>::col_type&, const glm::mat<3, 3, T, Q>&)’
  477 |         GLM_FUNC_QUALIFIER typename mat<3, 3, T, Q>::row_type operator*(typename mat<3, 3, T, Q>::col_type const& v, mat<3, 3, T, Q> const& m)
      |                                                               ^~~~~~~~
/usr/include/glm/detail/type_mat3x3.inl:477:63: note:   template argument deduction/substitution failed:
In file included from main.cpp:10:
projectiles.h:87:59: note:   mismatched types ‘const glm::mat<3, 3, T, Q>’ and ‘int’
   87 |                         locations[i] += trajectories[i] * elapsed_time/1000.0f;
      |                                                           ^~~~~~~~~~~~
In file included from /usr/include/glm/detail/type_mat3x3.hpp:183,
                 from /usr/include/glm/ext/matrix_double3x3.hpp:5,
                 from /usr/include/glm/mat3x3.hpp:5,
                 from /usr/include/glm/matrix.hpp:25,
                 from /usr/include/glm/detail/type_mat2x2.inl:1,
                 from /usr/include/glm/detail/type_mat2x2.hpp:176,
                 from /usr/include/glm/ext/matrix_double2x2.hpp:5,
                 from /usr/include/glm/mat2x2.hpp:5,
                 from /usr/include/glm/glm.hpp:119,
                 from game.h:8,
                 from main.cpp:7:
/usr/include/glm/detail/type_mat3x3.inl:486:44: note: candidate: ‘template<class T, glm::qualifier Q> glm::mat<3, 3, T, Q> glm::operator*(const glm::mat<3, 3, T, Q>&, const glm::mat<3, 3, T, Q>&)’
  486 |         GLM_FUNC_QUALIFIER mat<3, 3, T, Q> operator*(mat<3, 3, T, Q> const& m1, mat<3, 3, T, Q> const& m2)
      |                                            ^~~~~~~~
/usr/include/glm/detail/type_mat3x3.inl:486:44: note:   template argument deduction/substitution failed:
In file included from main.cpp:10:
projectiles.h:87:59: note:   ‘__gnu_cxx::__alloc_traits<std::allocator<glm::vec<3, float, glm::packed_highp> >, glm::vec<3, float, glm::packed_highp> >::value_type’ {aka ‘glm::vec<3, float, glm::packed_highp>’} is not derived from ‘const glm::mat<3, 3, T, Q>’
   87 |                         locations[i] += trajectories[i] * elapsed_time/1000.0f;
      |                                                           ^~~~~~~~~~~~
In file included from /usr/include/glm/detail/type_mat3x3.hpp:183,
                 from /usr/include/glm/ext/matrix_double3x3.hpp:5,
                 from /usr/include/glm/mat3x3.hpp:5,
                 from /usr/include/glm/matrix.hpp:25,
                 from /usr/include/glm/detail/type_mat2x2.inl:1,
                 from /usr/include/glm/detail/type_mat2x2.hpp:176,
                 from /usr/include/glm/ext/matrix_double2x2.hpp:5,
                 from /usr/include/glm/mat2x2.hpp:5,
                 from /usr/include/glm/glm.hpp:119,
                 from game.h:8,
                 from main.cpp:7:
/usr/include/glm/detail/type_mat3x3.inl:522:44: note: candidate: ‘template<class T, glm::qualifier Q> glm::mat<2, 3, T, Q> glm::operator*(const glm::mat<3, 3, T, Q>&, const glm::mat<2, 3, T, Q>&)’
  522 |         GLM_FUNC_QUALIFIER mat<2, 3, T, Q> operator*(mat<3, 3, T, Q> const& m1, mat<2, 3, T, Q> const& m2)
      |                                            ^~~~~~~~
/usr/include/glm/detail/type_mat3x3.inl:522:44: note:   template argument deduction/substitution failed:
In file included from main.cpp:10:
projectiles.h:87:59: note:   ‘__gnu_cxx::__alloc_traits<std::allocator<glm::vec<3, float, glm::packed_highp> >, glm::vec<3, float, glm::packed_highp> >::value_type’ {aka ‘glm::vec<3, float, glm::packed_highp>’} is not derived from ‘const glm::mat<3, 3, T, Q>’
   87 |                         locations[i] += trajectories[i] * elapsed_time/1000.0f;
      |                                                           ^~~~~~~~~~~~
In file included from /usr/include/glm/detail/type_mat3x3.hpp:183,
                 from /usr/include/glm/ext/matrix_double3x3.hpp:5,
                 from /usr/include/glm/mat3x3.hpp:5,
                 from /usr/include/glm/matrix.hpp:25,
                 from /usr/include/glm/detail/type_mat2x2.inl:1,
                 from /usr/include/glm/detail/type_mat2x2.hpp:176,
                 from /usr/include/glm/ext/matrix_double2x2.hpp:5,
                 from /usr/include/glm/mat2x2.hpp:5,
                 from /usr/include/glm/glm.hpp:119,
                 from game.h:8,
                 from main.cpp:7:
/usr/include/glm/detail/type_mat3x3.inl:534:44: note: candidate: ‘template<class T, glm::qualifier Q> glm::mat<4, 3, T, Q> glm::operator*(const glm::mat<3, 3, T, Q>&, const glm::mat<4, 3, T, Q>&)’
  534 |         GLM_FUNC_QUALIFIER mat<4, 3, T, Q> operator*(mat<3, 3, T, Q> const& m1, mat<4, 3, T, Q> const& m2)
      |                                            ^~~~~~~~
/usr/include/glm/detail/type_mat3x3.inl:534:44: note:   template argument deduction/substitution failed:
In file included from main.cpp:10:
projectiles.h:87:59: note:   ‘__gnu_cxx::__alloc_traits<std::allocator<glm::vec<3, float, glm::packed_highp> >, glm::vec<3, float, glm::packed_highp> >::value_type’ {aka ‘glm::vec<3, float, glm::packed_highp>’} is not derived from ‘const glm::mat<3, 3, T, Q>’
   87 |                         locations[i] += trajectories[i] * elapsed_time/1000.0f;
      |                                                           ^~~~~~~~~~~~
In file included from /usr/include/glm/detail/type_mat3x4.hpp:165,
                 from /usr/include/glm/ext/matrix_double3x4.hpp:5,
                 from /usr/include/glm/mat3x4.hpp:5,
                 from /usr/include/glm/matrix.hpp:26,
                 from /usr/include/glm/detail/type_mat2x2.inl:1,
                 from /usr/include/glm/detail/type_mat2x2.hpp:176,
                 from /usr/include/glm/ext/matrix_double2x2.hpp:5,
                 from /usr/include/glm/mat2x2.hpp:5,
                 from /usr/include/glm/glm.hpp:119,
                 from game.h:8,
                 from main.cpp:7:
/usr/include/glm/detail/type_mat3x4.inl:422:44: note: candidate: ‘template<class T, glm::qualifier Q> glm::mat<3, 4, T, Q> glm::operator*(const glm::mat<3, 4, T, Q>&, T)’
  422 |         GLM_FUNC_QUALIFIER mat<3, 4, T, Q> operator*(mat<3, 4, T, Q> const& m, T scalar)
      |                                            ^~~~~~~~
/usr/include/glm/detail/type_mat3x4.inl:422:44: note:   template argument deduction/substitution failed:
In file included from main.cpp:10:
projectiles.h:87:59: note:   ‘__gnu_cxx::__alloc_traits<std::allocator<glm::vec<3, float, glm::packed_highp> >, glm::vec<3, float, glm::packed_highp> >::value_type’ {aka ‘glm::vec<3, float, glm::packed_highp>’} is not derived from ‘const glm::mat<3, 4, T, Q>’
   87 |                         locations[i] += trajectories[i] * elapsed_time/1000.0f;
      |                                                           ^~~~~~~~~~~~
In file included from /usr/include/glm/detail/type_mat3x4.hpp:165,
                 from /usr/include/glm/ext/matrix_double3x4.hpp:5,
                 from /usr/include/glm/mat3x4.hpp:5,
                 from /usr/include/glm/matrix.hpp:26,
                 from /usr/include/glm/detail/type_mat2x2.inl:1,
                 from /usr/include/glm/detail/type_mat2x2.hpp:176,
                 from /usr/include/glm/ext/matrix_double2x2.hpp:5,
                 from /usr/include/glm/mat2x2.hpp:5,
                 from /usr/include/glm/glm.hpp:119,
                 from game.h:8,
                 from main.cpp:7:
/usr/include/glm/detail/type_mat3x4.inl:431:44: note: candidate: ‘template<class T, glm::qualifier Q> glm::mat<3, 4, T, Q> glm::operator*(T, const glm::mat<3, 4, T, Q>&)’
  431 |         GLM_FUNC_QUALIFIER mat<3, 4, T, Q> operator*(T scalar, mat<3, 4, T, Q> const& m)
      |                                            ^~~~~~~~
/usr/include/glm/detail/type_mat3x4.inl:431:44: note:   template argument deduction/substitution failed:
In file included from main.cpp:10:
projectiles.h:87:59: note:   mismatched types ‘const glm::mat<3, 4, T, Q>’ and ‘int’
   87 |                         locations[i] += trajectories[i] * elapsed_time/1000.0f;
      |                                                           ^~~~~~~~~~~~
In file included from /usr/include/glm/detail/type_mat3x4.hpp:165,
                 from /usr/include/glm/ext/matrix_double3x4.hpp:5,
                 from /usr/include/glm/mat3x4.hpp:5,
                 from /usr/include/glm/matrix.hpp:26,
                 from /usr/include/glm/detail/type_mat2x2.inl:1,
                 from /usr/include/glm/detail/type_mat2x2.hpp:176,
                 from /usr/include/glm/ext/matrix_double2x2.hpp:5,
                 from /usr/include/glm/mat2x2.hpp:5,
                 from /usr/include/glm/glm.hpp:119,
                 from game.h:8,
                 from main.cpp:7:
/usr/include/glm/detail/type_mat3x4.inl:440:63: note: candidate: ‘template<class T, glm::qualifier Q> typename glm::mat<3, 4, T, Q>::col_type glm::operator*(const glm::mat<3, 4, T, Q>&, const typename glm::mat<3, 4, T, Q>::row_type&)’
  440 |         GLM_FUNC_QUALIFIER typename mat<3, 4, T, Q>::col_type operator*
      |                                                               ^~~~~~~~
/usr/include/glm/detail/type_mat3x4.inl:440:63: note:   template argument deduction/substitution failed:
In file included from main.cpp:10:
projectiles.h:87:59: note:   ‘__gnu_cxx::__alloc_traits<std::allocator<glm::vec<3, float, glm::packed_highp> >, glm::vec<3, float, glm::packed_highp> >::value_type’ {aka ‘glm::vec<3, float, glm::packed_highp>’} is not derived from ‘const glm::mat<3, 4, T, Q>’
   87 |                         locations[i] += trajectories[i] * elapsed_time/1000.0f;
      |                                                           ^~~~~~~~~~~~
In file included from /usr/include/glm/detail/type_mat3x4.hpp:165,
                 from /usr/include/glm/ext/matrix_double3x4.hpp:5,
                 from /usr/include/glm/mat3x4.hpp:5,
                 from /usr/include/glm/matrix.hpp:26,
                 from /usr/include/glm/detail/type_mat2x2.inl:1,
                 from /usr/include/glm/detail/type_mat2x2.hpp:176,
                 from /usr/include/glm/ext/matrix_double2x2.hpp:5,
                 from /usr/include/glm/mat2x2.hpp:5,
                 from /usr/include/glm/glm.hpp:119,
                 from game.h:8,
                 from main.cpp:7:
/usr/include/glm/detail/type_mat3x4.inl:454:63: note: candidate: ‘template<class T, glm::qualifier Q> typename glm::mat<3, 4, T, Q>::row_type glm::operator*(const typename glm::mat<3, 4, T, Q>::col_type&, const glm::mat<3, 4, T, Q>&)’
  454 |         GLM_FUNC_QUALIFIER typename mat<3, 4, T, Q>::row_type operator*
      |                                                               ^~~~~~~~
/usr/include/glm/detail/type_mat3x4.inl:454:63: note:   template argument deduction/substitution failed:
In file included from main.cpp:10:
projectiles.h:87:59: note:   mismatched types ‘const glm::mat<3, 4, T, Q>’ and ‘int’
   87 |                         locations[i] += trajectories[i] * elapsed_time/1000.0f;
      |                                                           ^~~~~~~~~~~~
In file included from /usr/include/glm/detail/type_mat3x4.hpp:165,
                 from /usr/include/glm/ext/matrix_double3x4.hpp:5,
                 from /usr/include/glm/mat3x4.hpp:5,
                 from /usr/include/glm/matrix.hpp:26,
                 from /usr/include/glm/detail/type_mat2x2.inl:1,
                 from /usr/include/glm/detail/type_mat2x2.hpp:176,
                 from /usr/include/glm/ext/matrix_double2x2.hpp:5,
                 from /usr/include/glm/mat2x2.hpp:5,
                 from /usr/include/glm/glm.hpp:119,
                 from game.h:8,
                 from main.cpp:7:
/usr/include/glm/detail/type_mat3x4.inl:467:44: note: candidate: ‘template<class T, glm::qualifier Q> glm::mat<4, 4, T, Q> glm::operator*(const glm::mat<3, 4, T, Q>&, const glm::mat<4, 3, T, Q>&)’
  467 |         GLM_FUNC_QUALIFIER mat<4, 4, T, Q> operator*(mat<3, 4, T, Q> const& m1, mat<4, 3, T, Q> const& m2)
      |                                            ^~~~~~~~
/usr/include/glm/detail/type_mat3x4.inl:467:44: note:   template argument deduction/substitution failed:
In file included from main.cpp:10:
projectiles.h:87:59: note:   ‘__gnu_cxx::__alloc_traits<std::allocator<glm::vec<3, float, glm::packed_highp> >, glm::vec<3, float, glm::packed_highp> >::value_type’ {aka ‘glm::vec<3, float, glm::packed_highp>’} is not derived from ‘const glm::mat<3, 4, T, Q>’
   87 |                         locations[i] += trajectories[i] * elapsed_time/1000.0f;
      |                                                           ^~~~~~~~~~~~
In file included from /usr/include/glm/detail/type_mat3x4.hpp:165,
                 from /usr/include/glm/ext/matrix_double3x4.hpp:5,
                 from /usr/include/glm/mat3x4.hpp:5,
                 from /usr/include/glm/matrix.hpp:26,
                 from /usr/include/glm/detail/type_mat2x2.inl:1,
                 from /usr/include/glm/detail/type_mat2x2.hpp:176,
                 from /usr/include/glm/ext/matrix_double2x2.hpp:5,
                 from /usr/include/glm/mat2x2.hpp:5,
                 from /usr/include/glm/glm.hpp:119,
                 from game.h:8,
                 from main.cpp:7:
/usr/include/glm/detail/type_mat3x4.inl:516:44: note: candidate: ‘template<class T, glm::qualifier Q> glm::mat<2, 4, T, Q> glm::operator*(const glm::mat<3, 4, T, Q>&, const glm::mat<2, 3, T, Q>&)’
  516 |         GLM_FUNC_QUALIFIER mat<2, 4, T, Q> operator*(mat<3, 4, T, Q> const& m1, mat<2, 3, T, Q> const& m2)
      |                                            ^~~~~~~~
/usr/include/glm/detail/type_mat3x4.inl:516:44: note:   template argument deduction/substitution failed:
In file included from main.cpp:10:
projectiles.h:87:59: note:   ‘__gnu_cxx::__alloc_traits<std::allocator<glm::vec<3, float, glm::packed_highp> >, glm::vec<3, float, glm::packed_highp> >::value_type’ {aka ‘glm::vec<3, float, glm::packed_highp>’} is not derived from ‘const glm::mat<3, 4, T, Q>’
   87 |                         locations[i] += trajectories[i] * elapsed_time/1000.0f;
      |                                                           ^~~~~~~~~~~~
In file included from /usr/include/glm/detail/type_mat3x4.hpp:165,
                 from /usr/include/glm/ext/matrix_double3x4.hpp:5,
                 from /usr/include/glm/mat3x4.hpp:5,
                 from /usr/include/glm/matrix.hpp:26,
                 from /usr/include/glm/detail/type_mat2x2.inl:1,
                 from /usr/include/glm/detail/type_mat2x2.hpp:176,
                 from /usr/include/glm/ext/matrix_double2x2.hpp:5,
                 from /usr/include/glm/mat2x2.hpp:5,
                 from /usr/include/glm/glm.hpp:119,
                 from game.h:8,
                 from main.cpp:7:
/usr/include/glm/detail/type_mat3x4.inl:530:44: note: candidate: ‘template<class T, glm::qualifier Q> glm::mat<3, 4, T, Q> glm::operator*(const glm::mat<3, 4, T, Q>&, const glm::mat<3, 3, T, Q>&)’
  530 |         GLM_FUNC_QUALIFIER mat<3, 4, T, Q> operator*(mat<3, 4, T, Q> const& m1, mat<3, 3, T, Q> const& m2)
      |                                            ^~~~~~~~
/usr/include/glm/detail/type_mat3x4.inl:530:44: note:   template argument deduction/substitution failed:
In file included from main.cpp:10:
projectiles.h:87:59: note:   ‘__gnu_cxx::__alloc_traits<std::allocator<glm::vec<3, float, glm::packed_highp> >, glm::vec<3, float, glm::packed_highp> >::value_type’ {aka ‘glm::vec<3, float, glm::packed_highp>’} is not derived from ‘const glm::mat<3, 4, T, Q>’
   87 |                         locations[i] += trajectories[i] * elapsed_time/1000.0f;
      |                                                           ^~~~~~~~~~~~
In file included from /usr/include/glm/detail/type_mat4x2.hpp:170,
                 from /usr/include/glm/ext/matrix_double4x2.hpp:5,
                 from /usr/include/glm/mat4x2.hpp:5,
                 from /usr/include/glm/matrix.hpp:27,
                 from /usr/include/glm/detail/type_mat2x2.inl:1,
                 from /usr/include/glm/detail/type_mat2x2.hpp:176,
                 from /usr/include/glm/ext/matrix_double2x2.hpp:5,
                 from /usr/include/glm/mat2x2.hpp:5,
                 from /usr/include/glm/glm.hpp:119,
                 from game.h:8,
                 from main.cpp:7:
/usr/include/glm/detail/type_mat4x2.inl:449:44: note: candidate: ‘template<class T, glm::qualifier Q> glm::mat<4, 2, T, Q> glm::operator*(const glm::mat<4, 2, T, Q>&, T)’
  449 |         GLM_FUNC_QUALIFIER mat<4, 2, T, Q> operator*(mat<4, 2, T, Q> const& m, T scalar)
      |                                            ^~~~~~~~
/usr/include/glm/detail/type_mat4x2.inl:449:44: note:   template argument deduction/substitution failed:
In file included from main.cpp:10:
projectiles.h:87:59: note:   ‘__gnu_cxx::__alloc_traits<std::allocator<glm::vec<3, float, glm::packed_highp> >, glm::vec<3, float, glm::packed_highp> >::value_type’ {aka ‘glm::vec<3, float, glm::packed_highp>’} is not derived from ‘const glm::mat<4, 2, T, Q>’
   87 |                         locations[i] += trajectories[i] * elapsed_time/1000.0f;
      |                                                           ^~~~~~~~~~~~
In file included from /usr/include/glm/detail/type_mat4x2.hpp:170,
                 from /usr/include/glm/ext/matrix_double4x2.hpp:5,
                 from /usr/include/glm/mat4x2.hpp:5,
                 from /usr/include/glm/matrix.hpp:27,
                 from /usr/include/glm/detail/type_mat2x2.inl:1,
                 from /usr/include/glm/detail/type_mat2x2.hpp:176,
                 from /usr/include/glm/ext/matrix_double2x2.hpp:5,
                 from /usr/include/glm/mat2x2.hpp:5,
                 from /usr/include/glm/glm.hpp:119,
                 from game.h:8,
                 from main.cpp:7:
/usr/include/glm/detail/type_mat4x2.inl:459:44: note: candidate: ‘template<class T, glm::qualifier Q> glm::mat<4, 2, T, Q> glm::operator*(T, const glm::mat<4, 2, T, Q>&)’
  459 |         GLM_FUNC_QUALIFIER mat<4, 2, T, Q> operator*(T scalar, mat<4, 2, T, Q> const& m)
      |                                            ^~~~~~~~
/usr/include/glm/detail/type_mat4x2.inl:459:44: note:   template argument deduction/substitution failed:
In file included from main.cpp:10:
projectiles.h:87:59: note:   mismatched types ‘const glm::mat<4, 2, T, Q>’ and ‘int’
   87 |                         locations[i] += trajectories[i] * elapsed_time/1000.0f;
      |                                                           ^~~~~~~~~~~~
In file included from /usr/include/glm/detail/type_mat4x2.hpp:170,
                 from /usr/include/glm/ext/matrix_double4x2.hpp:5,
                 from /usr/include/glm/mat4x2.hpp:5,
                 from /usr/include/glm/matrix.hpp:27,
                 from /usr/include/glm/detail/type_mat2x2.inl:1,
                 from /usr/include/glm/detail/type_mat2x2.hpp:176,
                 from /usr/include/glm/ext/matrix_double2x2.hpp:5,
                 from /usr/include/glm/mat2x2.hpp:5,
                 from /usr/include/glm/glm.hpp:119,
                 from game.h:8,
                 from main.cpp:7:
/usr/include/glm/detail/type_mat4x2.inl:469:63: note: candidate: ‘template<class T, glm::qualifier Q> typename glm::mat<4, 2, T, Q>::col_type glm::operator*(const glm::mat<4, 2, T, Q>&, const typename glm::mat<4, 2, T, Q>::row_type&)’
  469 |         GLM_FUNC_QUALIFIER typename mat<4, 2, T, Q>::col_type operator*(mat<4, 2, T, Q> const& m, typename mat<4, 2, T, Q>::row_type const& v)
      |                                                               ^~~~~~~~
/usr/include/glm/detail/type_mat4x2.inl:469:63: note:   template argument deduction/substitution failed:
In file included from main.cpp:10:
projectiles.h:87:59: note:   ‘__gnu_cxx::__alloc_traits<std::allocator<glm::vec<3, float, glm::packed_highp> >, glm::vec<3, float, glm::packed_highp> >::value_type’ {aka ‘glm::vec<3, float, glm::packed_highp>’} is not derived from ‘const glm::mat<4, 2, T, Q>’
   87 |                         locations[i] += trajectories[i] * elapsed_time/1000.0f;
      |                                                           ^~~~~~~~~~~~
In file included from /usr/include/glm/detail/type_mat4x2.hpp:170,
                 from /usr/include/glm/ext/matrix_double4x2.hpp:5,
                 from /usr/include/glm/mat4x2.hpp:5,
                 from /usr/include/glm/matrix.hpp:27,
                 from /usr/include/glm/detail/type_mat2x2.inl:1,
                 from /usr/include/glm/detail/type_mat2x2.hpp:176,
                 from /usr/include/glm/ext/matrix_double2x2.hpp:5,
                 from /usr/include/glm/mat2x2.hpp:5,
                 from /usr/include/glm/glm.hpp:119,
                 from game.h:8,
                 from main.cpp:7:
/usr/include/glm/detail/type_mat4x2.inl:477:63: note: candidate: ‘template<class T, glm::qualifier Q> typename glm::mat<4, 2, T, Q>::row_type glm::operator*(const typename glm::mat<4, 2, T, Q>::col_type&, const glm::mat<4, 2, T, Q>&)’
  477 |         GLM_FUNC_QUALIFIER typename mat<4, 2, T, Q>::row_type operator*(typename mat<4, 2, T, Q>::col_type const& v, mat<4, 2, T, Q> const& m)
      |                                                               ^~~~~~~~
/usr/include/glm/detail/type_mat4x2.inl:477:63: note:   template argument deduction/substitution failed:
In file included from main.cpp:10:
projectiles.h:87:59: note:   mismatched types ‘const glm::mat<4, 2, T, Q>’ and ‘int’
   87 |                         locations[i] += trajectories[i] * elapsed_time/1000.0f;
      |                                                           ^~~~~~~~~~~~
In file included from /usr/include/glm/detail/type_mat4x2.hpp:170,
                 from /usr/include/glm/ext/matrix_double4x2.hpp:5,
                 from /usr/include/glm/mat4x2.hpp:5,
                 from /usr/include/glm/matrix.hpp:27,
                 from /usr/include/glm/detail/type_mat2x2.inl:1,
                 from /usr/include/glm/detail/type_mat2x2.hpp:176,
                 from /usr/include/glm/ext/matrix_double2x2.hpp:5,
                 from /usr/include/glm/mat2x2.hpp:5,
                 from /usr/include/glm/glm.hpp:119,
                 from game.h:8,
                 from main.cpp:7:
/usr/include/glm/detail/type_mat4x2.inl:487:44: note: candidate: ‘template<class T, glm::qualifier Q> glm::mat<2, 2, T, Q> glm::operator*(const glm::mat<4, 2, T, Q>&, const glm::mat<2, 4, T, Q>&)’
  487 |         GLM_FUNC_QUALIFIER mat<2, 2, T, Q> operator*(mat<4, 2, T, Q> const& m1, mat<2, 4, T, Q> const& m2)
      |                                            ^~~~~~~~
/usr/include/glm/detail/type_mat4x2.inl:487:44: note:   template argument deduction/substitution failed:
In file included from main.cpp:10:
projectiles.h:87:59: note:   ‘__gnu_cxx::__alloc_traits<std::allocator<glm::vec<3, float, glm::packed_highp> >, glm::vec<3, float, glm::packed_highp> >::value_type’ {aka ‘glm::vec<3, float, glm::packed_highp>’} is not derived from ‘const glm::mat<4, 2, T, Q>’
   87 |                         locations[i] += trajectories[i] * elapsed_time/1000.0f;
      |                                                           ^~~~~~~~~~~~
In file included from /usr/include/glm/detail/type_mat4x2.hpp:170,
                 from /usr/include/glm/ext/matrix_double4x2.hpp:5,
                 from /usr/include/glm/mat4x2.hpp:5,
                 from /usr/include/glm/matrix.hpp:27,
                 from /usr/include/glm/detail/type_mat2x2.inl:1,
                 from /usr/include/glm/detail/type_mat2x2.hpp:176,
                 from /usr/include/glm/ext/matrix_double2x2.hpp:5,
                 from /usr/include/glm/mat2x2.hpp:5,
                 from /usr/include/glm/glm.hpp:119,
                 from game.h:8,
                 from main.cpp:7:
/usr/include/glm/detail/type_mat4x2.inl:516:44: note: candidate: ‘template<class T, glm::qualifier Q> glm::mat<3, 2, T, Q> glm::operator*(const glm::mat<4, 2, T, Q>&, const glm::mat<3, 4, T, Q>&)’
  516 |         GLM_FUNC_QUALIFIER mat<3, 2, T, Q> operator*(mat<4, 2, T, Q> const& m1, mat<3, 4, T, Q> const& m2)
      |                                            ^~~~~~~~
/usr/include/glm/detail/type_mat4x2.inl:516:44: note:   template argument deduction/substitution failed:
In file included from main.cpp:10:
projectiles.h:87:59: note:   ‘__gnu_cxx::__alloc_traits<std::allocator<glm::vec<3, float, glm::packed_highp> >, glm::vec<3, float, glm::packed_highp> >::value_type’ {aka ‘glm::vec<3, float, glm::packed_highp>’} is not derived from ‘const glm::mat<4, 2, T, Q>’
   87 |                         locations[i] += trajectories[i] * elapsed_time/1000.0f;
      |                                                           ^~~~~~~~~~~~
In file included from /usr/include/glm/detail/type_mat4x2.hpp:170,
                 from /usr/include/glm/ext/matrix_double4x2.hpp:5,
                 from /usr/include/glm/mat4x2.hpp:5,
                 from /usr/include/glm/matrix.hpp:27,
                 from /usr/include/glm/detail/type_mat2x2.inl:1,
                 from /usr/include/glm/detail/type_mat2x2.hpp:176,
                 from /usr/include/glm/ext/matrix_double2x2.hpp:5,
                 from /usr/include/glm/mat2x2.hpp:5,
                 from /usr/include/glm/glm.hpp:119,
                 from game.h:8,
                 from main.cpp:7:
/usr/include/glm/detail/type_mat4x2.inl:528:44: note: candidate: ‘template<class T, glm::qualifier Q> glm::mat<4, 2, T, Q> glm::operator*(const glm::mat<4, 2, T, Q>&, const glm::mat<4, 4, T, Q>&)’
  528 |         GLM_FUNC_QUALIFIER mat<4, 2, T, Q> operator*(mat<4, 2, T, Q> const& m1, mat<4, 4, T, Q> const& m2)
      |                                            ^~~~~~~~
/usr/include/glm/detail/type_mat4x2.inl:528:44: note:   template argument deduction/substitution failed:
In file included from main.cpp:10:
projectiles.h:87:59: note:   ‘__gnu_cxx::__alloc_traits<std::allocator<glm::vec<3, float, glm::packed_highp> >, glm::vec<3, float, glm::packed_highp> >::value_type’ {aka ‘glm::vec<3, float, glm::packed_highp>’} is not derived from ‘const glm::mat<4, 2, T, Q>’
   87 |                         locations[i] += trajectories[i] * elapsed_time/1000.0f;
      |                                                           ^~~~~~~~~~~~
In file included from /usr/include/glm/detail/type_mat4x3.hpp:170,
                 from /usr/include/glm/ext/matrix_double4x3.hpp:5,
                 from /usr/include/glm/mat4x3.hpp:5,
                 from /usr/include/glm/matrix.hpp:28,
                 from /usr/include/glm/detail/type_mat2x2.inl:1,
                 from /usr/include/glm/detail/type_mat2x2.hpp:176,
                 from /usr/include/glm/ext/matrix_double2x2.hpp:5,
                 from /usr/include/glm/mat2x2.hpp:5,
                 from /usr/include/glm/glm.hpp:119,
                 from game.h:8,
                 from main.cpp:7:
/usr/include/glm/detail/type_mat4x3.inl:449:44: note: candidate: ‘template<class T, glm::qualifier Q> glm::mat<4, 3, T, Q> glm::operator*(const glm::mat<4, 3, T, Q>&, const T&)’
  449 |         GLM_FUNC_QUALIFIER mat<4, 3, T, Q> operator*(mat<4, 3, T, Q> const& m, T const& s)
      |                                            ^~~~~~~~
/usr/include/glm/detail/type_mat4x3.inl:449:44: note:   template argument deduction/substitution failed:
In file included from main.cpp:10:
projectiles.h:87:59: note:   ‘__gnu_cxx::__alloc_traits<std::allocator<glm::vec<3, float, glm::packed_highp> >, glm::vec<3, float, glm::packed_highp> >::value_type’ {aka ‘glm::vec<3, float, glm::packed_highp>’} is not derived from ‘const glm::mat<4, 3, T, Q>’
   87 |                         locations[i] += trajectories[i] * elapsed_time/1000.0f;
      |                                                           ^~~~~~~~~~~~
In file included from /usr/include/glm/detail/type_mat4x3.hpp:170,
                 from /usr/include/glm/ext/matrix_double4x3.hpp:5,
                 from /usr/include/glm/mat4x3.hpp:5,
                 from /usr/include/glm/matrix.hpp:28,
                 from /usr/include/glm/detail/type_mat2x2.inl:1,
                 from /usr/include/glm/detail/type_mat2x2.hpp:176,
                 from /usr/include/glm/ext/matrix_double2x2.hpp:5,
                 from /usr/include/glm/mat2x2.hpp:5,
                 from /usr/include/glm/glm.hpp:119,
                 from game.h:8,
                 from main.cpp:7:
/usr/include/glm/detail/type_mat4x3.inl:459:44: note: candidate: ‘template<class T, glm::qualifier Q> glm::mat<4, 3, T, Q> glm::operator*(const T&, const glm::mat<4, 3, T, Q>&)’
  459 |         GLM_FUNC_QUALIFIER mat<4, 3, T, Q> operator*(T const& s, mat<4, 3, T, Q> const& m)
      |                                            ^~~~~~~~
/usr/include/glm/detail/type_mat4x3.inl:459:44: note:   template argument deduction/substitution failed:
In file included from main.cpp:10:
projectiles.h:87:59: note:   mismatched types ‘const glm::mat<4, 3, T, Q>’ and ‘int’
   87 |                         locations[i] += trajectories[i] * elapsed_time/1000.0f;
      |                                                           ^~~~~~~~~~~~
In file included from /usr/include/glm/detail/type_mat4x3.hpp:170,
                 from /usr/include/glm/ext/matrix_double4x3.hpp:5,
                 from /usr/include/glm/mat4x3.hpp:5,
                 from /usr/include/glm/matrix.hpp:28,
                 from /usr/include/glm/detail/type_mat2x2.inl:1,
                 from /usr/include/glm/detail/type_mat2x2.hpp:176,
                 from /usr/include/glm/ext/matrix_double2x2.hpp:5,
                 from /usr/include/glm/mat2x2.hpp:5,
                 from /usr/include/glm/glm.hpp:119,
                 from game.h:8,
                 from main.cpp:7:
/usr/include/glm/detail/type_mat4x3.inl:469:63: note: candidate: ‘template<class T, glm::qualifier Q> typename glm::mat<4, 3, T, Q>::col_type glm::operator*(const glm::mat<4, 3, T, Q>&, const typename glm::mat<4, 3, T, Q>::row_type&)’
  469 |         GLM_FUNC_QUALIFIER typename mat<4, 3, T, Q>::col_type operator*
      |                                                               ^~~~~~~~
/usr/include/glm/detail/type_mat4x3.inl:469:63: note:   template argument deduction/substitution failed:
In file included from main.cpp:10:
projectiles.h:87:59: note:   ‘__gnu_cxx::__alloc_traits<std::allocator<glm::vec<3, float, glm::packed_highp> >, glm::vec<3, float, glm::packed_highp> >::value_type’ {aka ‘glm::vec<3, float, glm::packed_highp>’} is not derived from ‘const glm::mat<4, 3, T, Q>’
   87 |                         locations[i] += trajectories[i] * elapsed_time/1000.0f;
      |                                                           ^~~~~~~~~~~~
In file included from /usr/include/glm/detail/type_mat4x3.hpp:170,
                 from /usr/include/glm/ext/matrix_double4x3.hpp:5,
                 from /usr/include/glm/mat4x3.hpp:5,
                 from /usr/include/glm/matrix.hpp:28,
                 from /usr/include/glm/detail/type_mat2x2.inl:1,
                 from /usr/include/glm/detail/type_mat2x2.hpp:176,
                 from /usr/include/glm/ext/matrix_double2x2.hpp:5,
                 from /usr/include/glm/mat2x2.hpp:5,
                 from /usr/include/glm/glm.hpp:119,
                 from game.h:8,
                 from main.cpp:7:
/usr/include/glm/detail/type_mat4x3.inl:481:63: note: candidate: ‘template<class T, glm::qualifier Q> typename glm::mat<4, 3, T, Q>::row_type glm::operator*(const typename glm::mat<4, 3, T, Q>::col_type&, const glm::mat<4, 3, T, Q>&)’
  481 |         GLM_FUNC_QUALIFIER typename mat<4, 3, T, Q>::row_type operator*
      |                                                               ^~~~~~~~
/usr/include/glm/detail/type_mat4x3.inl:481:63: note:   template argument deduction/substitution failed:
In file included from main.cpp:10:
projectiles.h:87:59: note:   mismatched types ‘const glm::mat<4, 3, T, Q>’ and ‘int’
   87 |                         locations[i] += trajectories[i] * elapsed_time/1000.0f;
      |                                                           ^~~~~~~~~~~~
In file included from /usr/include/glm/detail/type_mat4x3.hpp:170,
                 from /usr/include/glm/ext/matrix_double4x3.hpp:5,
                 from /usr/include/glm/mat4x3.hpp:5,
                 from /usr/include/glm/matrix.hpp:28,
                 from /usr/include/glm/detail/type_mat2x2.inl:1,
                 from /usr/include/glm/detail/type_mat2x2.hpp:176,
                 from /usr/include/glm/ext/matrix_double2x2.hpp:5,
                 from /usr/include/glm/mat2x2.hpp:5,
                 from /usr/include/glm/glm.hpp:119,
                 from game.h:8,
                 from main.cpp:7:
/usr/include/glm/detail/type_mat4x3.inl:494:44: note: candidate: ‘template<class T, glm::qualifier Q> glm::mat<2, 3, T, Q> glm::operator*(const glm::mat<4, 3, T, Q>&, const glm::mat<2, 4, T, Q>&)’
  494 |         GLM_FUNC_QUALIFIER mat<2, 3, T, Q> operator*(mat<4, 3, T, Q> const& m1, mat<2, 4, T, Q> const& m2)
      |                                            ^~~~~~~~
/usr/include/glm/detail/type_mat4x3.inl:494:44: note:   template argument deduction/substitution failed:
In file included from main.cpp:10:
projectiles.h:87:59: note:   ‘__gnu_cxx::__alloc_traits<std::allocator<glm::vec<3, float, glm::packed_highp> >, glm::vec<3, float, glm::packed_highp> >::value_type’ {aka ‘glm::vec<3, float, glm::packed_highp>’} is not derived from ‘const glm::mat<4, 3, T, Q>’
   87 |                         locations[i] += trajectories[i] * elapsed_time/1000.0f;
      |                                                           ^~~~~~~~~~~~
In file included from /usr/include/glm/detail/type_mat4x3.hpp:170,
                 from /usr/include/glm/ext/matrix_double4x3.hpp:5,
                 from /usr/include/glm/mat4x3.hpp:5,
                 from /usr/include/glm/matrix.hpp:28,
                 from /usr/include/glm/detail/type_mat2x2.inl:1,
                 from /usr/include/glm/detail/type_mat2x2.hpp:176,
                 from /usr/include/glm/ext/matrix_double2x2.hpp:5,
                 from /usr/include/glm/mat2x2.hpp:5,
                 from /usr/include/glm/glm.hpp:119,
                 from game.h:8,
                 from main.cpp:7:
/usr/include/glm/detail/type_mat4x3.inl:506:44: note: candidate: ‘template<class T, glm::qualifier Q> glm::mat<3, 3, T, Q> glm::operator*(const glm::mat<4, 3, T, Q>&, const glm::mat<3, 4, T, Q>&)’
  506 |         GLM_FUNC_QUALIFIER mat<3, 3, T, Q> operator*(mat<4, 3, T, Q> const& m1, mat<3, 4, T, Q> const& m2)
      |                                            ^~~~~~~~
/usr/include/glm/detail/type_mat4x3.inl:506:44: note:   template argument deduction/substitution failed:
In file included from main.cpp:10:
projectiles.h:87:59: note:   ‘__gnu_cxx::__alloc_traits<std::allocator<glm::vec<3, float, glm::packed_highp> >, glm::vec<3, float, glm::packed_highp> >::value_type’ {aka ‘glm::vec<3, float, glm::packed_highp>’} is not derived from ‘const glm::mat<4, 3, T, Q>’
   87 |                         locations[i] += trajectories[i] * elapsed_time/1000.0f;
      |                                                           ^~~~~~~~~~~~
In file included from /usr/include/glm/detail/type_mat4x3.hpp:170,
                 from /usr/include/glm/ext/matrix_double4x3.hpp:5,
                 from /usr/include/glm/mat4x3.hpp:5,
                 from /usr/include/glm/matrix.hpp:28,
                 from /usr/include/glm/detail/type_mat2x2.inl:1,
                 from /usr/include/glm/detail/type_mat2x2.hpp:176,
                 from /usr/include/glm/ext/matrix_double2x2.hpp:5,
                 from /usr/include/glm/mat2x2.hpp:5,
                 from /usr/include/glm/glm.hpp:119,
                 from game.h:8,
                 from main.cpp:7:
/usr/include/glm/detail/type_mat4x3.inl:548:44: note: candidate: ‘template<class T, glm::qualifier Q> glm::mat<4, 3, T, Q> glm::operator*(const glm::mat<4, 3, T, Q>&, const glm::mat<4, 4, T, Q>&)’
  548 |         GLM_FUNC_QUALIFIER mat<4, 3, T, Q> operator*(mat<4, 3, T, Q> const& m1, mat<4, 4, T, Q> const& m2)
      |                                            ^~~~~~~~
/usr/include/glm/detail/type_mat4x3.inl:548:44: note:   template argument deduction/substitution failed:
In file included from main.cpp:10:
projectiles.h:87:59: note:   ‘__gnu_cxx::__alloc_traits<std::allocator<glm::vec<3, float, glm::packed_highp> >, glm::vec<3, float, glm::packed_highp> >::value_type’ {aka ‘glm::vec<3, float, glm::packed_highp>’} is not derived from ‘const glm::mat<4, 3, T, Q>’
   87 |                         locations[i] += trajectories[i] * elapsed_time/1000.0f;
      |                                                           ^~~~~~~~~~~~
In file included from /usr/include/glm/detail/type_mat4x4.hpp:188,
                 from /usr/include/glm/ext/matrix_double4x4.hpp:5,
                 from /usr/include/glm/mat4x4.hpp:5,
                 from /usr/include/glm/matrix.hpp:29,
                 from /usr/include/glm/detail/type_mat2x2.inl:1,
                 from /usr/include/glm/detail/type_mat2x2.hpp:176,
                 from /usr/include/glm/ext/matrix_double2x2.hpp:5,
                 from /usr/include/glm/mat2x2.hpp:5,
                 from /usr/include/glm/glm.hpp:119,
                 from game.h:8,
                 from main.cpp:7:
/usr/include/glm/detail/type_mat4x4.inl:516:44: note: candidate: ‘template<class T, glm::qualifier Q> glm::mat<4, 4, T, Q> glm::operator*(const glm::mat<4, 4, T, Q>&, const T&)’
  516 |         GLM_FUNC_QUALIFIER mat<4, 4, T, Q> operator*(mat<4, 4, T, Q> const& m, T const  & s)
      |                                            ^~~~~~~~
/usr/include/glm/detail/type_mat4x4.inl:516:44: note:   template argument deduction/substitution failed:
In file included from main.cpp:10:
projectiles.h:87:59: note:   ‘__gnu_cxx::__alloc_traits<std::allocator<glm::vec<3, float, glm::packed_highp> >, glm::vec<3, float, glm::packed_highp> >::value_type’ {aka ‘glm::vec<3, float, glm::packed_highp>’} is not derived from ‘const glm::mat<4, 4, T, Q>’
   87 |                         locations[i] += trajectories[i] * elapsed_time/1000.0f;
      |                                                           ^~~~~~~~~~~~
In file included from /usr/include/glm/detail/type_mat4x4.hpp:188,
                 from /usr/include/glm/ext/matrix_double4x4.hpp:5,
                 from /usr/include/glm/mat4x4.hpp:5,
                 from /usr/include/glm/matrix.hpp:29,
                 from /usr/include/glm/detail/type_mat2x2.inl:1,
                 from /usr/include/glm/detail/type_mat2x2.hpp:176,
                 from /usr/include/glm/ext/matrix_double2x2.hpp:5,
                 from /usr/include/glm/mat2x2.hpp:5,
                 from /usr/include/glm/glm.hpp:119,
                 from game.h:8,
                 from main.cpp:7:
/usr/include/glm/detail/type_mat4x4.inl:526:44: note: candidate: ‘template<class T, glm::qualifier Q> glm::mat<4, 4, T, Q> glm::operator*(const T&, const glm::mat<4, 4, T, Q>&)’
  526 |         GLM_FUNC_QUALIFIER mat<4, 4, T, Q> operator*(T const& s, mat<4, 4, T, Q> const& m)
      |                                            ^~~~~~~~
/usr/include/glm/detail/type_mat4x4.inl:526:44: note:   template argument deduction/substitution failed:
In file included from main.cpp:10:
projectiles.h:87:59: note:   mismatched types ‘const glm::mat<4, 4, T, Q>’ and ‘int’
   87 |                         locations[i] += trajectories[i] * elapsed_time/1000.0f;
      |                                                           ^~~~~~~~~~~~
In file included from /usr/include/glm/detail/type_mat4x4.hpp:188,
                 from /usr/include/glm/ext/matrix_double4x4.hpp:5,
                 from /usr/include/glm/mat4x4.hpp:5,
                 from /usr/include/glm/matrix.hpp:29,
                 from /usr/include/glm/detail/type_mat2x2.inl:1,
                 from /usr/include/glm/detail/type_mat2x2.hpp:176,
                 from /usr/include/glm/ext/matrix_double2x2.hpp:5,
                 from /usr/include/glm/mat2x2.hpp:5,
                 from /usr/include/glm/glm.hpp:119,
                 from game.h:8,
                 from main.cpp:7:
/usr/include/glm/detail/type_mat4x4.inl:536:63: note: candidate: ‘template<class T, glm::qualifier Q> typename glm::mat<4, 4, T, Q>::col_type glm::operator*(const glm::mat<4, 4, T, Q>&, const typename glm::mat<4, 4, T, Q>::row_type&)’
  536 |         GLM_FUNC_QUALIFIER typename mat<4, 4, T, Q>::col_type operator*
      |                                                               ^~~~~~~~
/usr/include/glm/detail/type_mat4x4.inl:536:63: note:   template argument deduction/substitution failed:
In file included from main.cpp:10:
projectiles.h:87:59: note:   ‘__gnu_cxx::__alloc_traits<std::allocator<glm::vec<3, float, glm::packed_highp> >, glm::vec<3, float, glm::packed_highp> >::value_type’ {aka ‘glm::vec<3, float, glm::packed_highp>’} is not derived from ‘const glm::mat<4, 4, T, Q>’
   87 |                         locations[i] += trajectories[i] * elapsed_time/1000.0f;
      |                                                           ^~~~~~~~~~~~
In file included from /usr/include/glm/detail/type_mat4x4.hpp:188,
                 from /usr/include/glm/ext/matrix_double4x4.hpp:5,
                 from /usr/include/glm/mat4x4.hpp:5,
                 from /usr/include/glm/matrix.hpp:29,
                 from /usr/include/glm/detail/type_mat2x2.inl:1,
                 from /usr/include/glm/detail/type_mat2x2.hpp:176,
                 from /usr/include/glm/ext/matrix_double2x2.hpp:5,
                 from /usr/include/glm/mat2x2.hpp:5,
                 from /usr/include/glm/glm.hpp:119,
                 from game.h:8,
                 from main.cpp:7:
/usr/include/glm/detail/type_mat4x4.inl:584:63: note: candidate: ‘template<class T, glm::qualifier Q> typename glm::mat<4, 4, T, Q>::row_type glm::operator*(const typename glm::mat<4, 4, T, Q>::col_type&, const glm::mat<4, 4, T, Q>&)’
  584 |         GLM_FUNC_QUALIFIER typename mat<4, 4, T, Q>::row_type operator*
      |                                                               ^~~~~~~~
/usr/include/glm/detail/type_mat4x4.inl:584:63: note:   template argument deduction/substitution failed:
In file included from main.cpp:10:
projectiles.h:87:59: note:   mismatched types ‘const glm::mat<4, 4, T, Q>’ and ‘int’
   87 |                         locations[i] += trajectories[i] * elapsed_time/1000.0f;
      |                                                           ^~~~~~~~~~~~
In file included from /usr/include/glm/detail/type_mat4x4.hpp:188,
                 from /usr/include/glm/ext/matrix_double4x4.hpp:5,
                 from /usr/include/glm/mat4x4.hpp:5,
                 from /usr/include/glm/matrix.hpp:29,
                 from /usr/include/glm/detail/type_mat2x2.inl:1,
                 from /usr/include/glm/detail/type_mat2x2.hpp:176,
                 from /usr/include/glm/ext/matrix_double2x2.hpp:5,
                 from /usr/include/glm/mat2x2.hpp:5,
                 from /usr/include/glm/glm.hpp:119,
                 from game.h:8,
                 from main.cpp:7:
/usr/include/glm/detail/type_mat4x4.inl:598:44: note: candidate: ‘template<class T, glm::qualifier Q> glm::mat<2, 4, T, Q> glm::operator*(const glm::mat<4, 4, T, Q>&, const glm::mat<2, 4, T, Q>&)’
  598 |         GLM_FUNC_QUALIFIER mat<2, 4, T, Q> operator*(mat<4, 4, T, Q> const& m1, mat<2, 4, T, Q> const& m2)
      |                                            ^~~~~~~~
/usr/include/glm/detail/type_mat4x4.inl:598:44: note:   template argument deduction/substitution failed:
In file included from main.cpp:10:
projectiles.h:87:59: note:   ‘__gnu_cxx::__alloc_traits<std::allocator<glm::vec<3, float, glm::packed_highp> >, glm::vec<3, float, glm::packed_highp> >::value_type’ {aka ‘glm::vec<3, float, glm::packed_highp>’} is not derived from ‘const glm::mat<4, 4, T, Q>’
   87 |                         locations[i] += trajectories[i] * elapsed_time/1000.0f;
      |                                                           ^~~~~~~~~~~~
In file included from /usr/include/glm/detail/type_mat4x4.hpp:188,
                 from /usr/include/glm/ext/matrix_double4x4.hpp:5,
                 from /usr/include/glm/mat4x4.hpp:5,
                 from /usr/include/glm/matrix.hpp:29,
                 from /usr/include/glm/detail/type_mat2x2.inl:1,
                 from /usr/include/glm/detail/type_mat2x2.hpp:176,
                 from /usr/include/glm/ext/matrix_double2x2.hpp:5,
                 from /usr/include/glm/mat2x2.hpp:5,
                 from /usr/include/glm/glm.hpp:119,
                 from game.h:8,
                 from main.cpp:7:
/usr/include/glm/detail/type_mat4x4.inl:612:44: note: candidate: ‘template<class T, glm::qualifier Q> glm::mat<3, 4, T, Q> glm::operator*(const glm::mat<4, 4, T, Q>&, const glm::mat<3, 4, T, Q>&)’
  612 |         GLM_FUNC_QUALIFIER mat<3, 4, T, Q> operator*(mat<4, 4, T, Q> const& m1, mat<3, 4, T, Q> const& m2)
      |                                            ^~~~~~~~
/usr/include/glm/detail/type_mat4x4.inl:612:44: note:   template argument deduction/substitution failed:
In file included from main.cpp:10:
projectiles.h:87:59: note:   ‘__gnu_cxx::__alloc_traits<std::allocator<glm::vec<3, float, glm::packed_highp> >, glm::vec<3, float, glm::packed_highp> >::value_type’ {aka ‘glm::vec<3, float, glm::packed_highp>’} is not derived from ‘const glm::mat<4, 4, T, Q>’
   87 |                         locations[i] += trajectories[i] * elapsed_time/1000.0f;
      |                                                           ^~~~~~~~~~~~
In file included from /usr/include/glm/detail/type_mat4x4.hpp:188,
                 from /usr/include/glm/ext/matrix_double4x4.hpp:5,
                 from /usr/include/glm/mat4x4.hpp:5,
                 from /usr/include/glm/matrix.hpp:29,
                 from /usr/include/glm/detail/type_mat2x2.inl:1,
                 from /usr/include/glm/detail/type_mat2x2.hpp:176,
                 from /usr/include/glm/ext/matrix_double2x2.hpp:5,
                 from /usr/include/glm/mat2x2.hpp:5,
                 from /usr/include/glm/glm.hpp:119,
                 from game.h:8,
                 from main.cpp:7:
/usr/include/glm/detail/type_mat4x4.inl:630:44: note: candidate: ‘template<class T, glm::qualifier Q> glm::mat<4, 4, T, Q> glm::operator*(const glm::mat<4, 4, T, Q>&, const glm::mat<4, 4, T, Q>&)’
  630 |         GLM_FUNC_QUALIFIER mat<4, 4, T, Q> operator*(mat<4, 4, T, Q> const& m1, mat<4, 4, T, Q> const& m2)
      |                                            ^~~~~~~~
/usr/include/glm/detail/type_mat4x4.inl:630:44: note:   template argument deduction/substitution failed:
In file included from main.cpp:10:
projectiles.h:87:59: note:   ‘__gnu_cxx::__alloc_traits<std::allocator<glm::vec<3, float, glm::packed_highp> >, glm::vec<3, float, glm::packed_highp> >::value_type’ {aka ‘glm::vec<3, float, glm::packed_highp>’} is not derived from ‘const glm::mat<4, 4, T, Q>’
   87 |                         locations[i] += trajectories[i] * elapsed_time/1000.0f;
      |                                                           ^~~~~~~~~~~~
In file included from /usr/include/glm/detail/type_vec1.hpp:307,
                 from /usr/include/glm/exponential.hpp:17,
                 from /usr/include/glm/detail/func_geometric.inl:1,
                 from /usr/include/glm/geometric.hpp:116,
                 from /usr/include/glm/detail/func_matrix.inl:1,
                 from /usr/include/glm/matrix.hpp:161,
                 from /usr/include/glm/detail/type_mat2x2.inl:1,
                 from /usr/include/glm/detail/type_mat2x2.hpp:176,
                 from /usr/include/glm/ext/matrix_double2x2.hpp:5,
                 from /usr/include/glm/mat2x2.hpp:5,
                 from /usr/include/glm/glm.hpp:119,
                 from game.h:8,
                 from main.cpp:7:
/usr/include/glm/detail/type_vec1.inl:350:55: note: candidate: ‘template<class T, glm::qualifier Q> constexpr glm::vec<1, T, Q> glm::operator*(const glm::vec<1, T, Q>&, T)’
  350 |         GLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> operator*(vec<1, T, Q> const& v, T scalar)
      |                                                       ^~~~~~~~
/usr/include/glm/detail/type_vec1.inl:350:55: note:   template argument deduction/substitution failed:
In file included from main.cpp:10:
projectiles.h:87:59: note:   template argument ‘3’ does not match ‘1’
   87 |                         locations[i] += trajectories[i] * elapsed_time/1000.0f;
      |                                                           ^~~~~~~~~~~~
In file included from /usr/include/glm/detail/type_vec1.hpp:307,
                 from /usr/include/glm/exponential.hpp:17,
                 from /usr/include/glm/detail/func_geometric.inl:1,
                 from /usr/include/glm/geometric.hpp:116,
                 from /usr/include/glm/detail/func_matrix.inl:1,
                 from /usr/include/glm/matrix.hpp:161,
                 from /usr/include/glm/detail/type_mat2x2.inl:1,
                 from /usr/include/glm/detail/type_mat2x2.hpp:176,
                 from /usr/include/glm/ext/matrix_double2x2.hpp:5,
                 from /usr/include/glm/mat2x2.hpp:5,
                 from /usr/include/glm/glm.hpp:119,
                 from game.h:8,
                 from main.cpp:7:
/usr/include/glm/detail/type_vec1.inl:357:55: note: candidate: ‘template<class T, glm::qualifier Q> constexpr glm::vec<1, T, Q> glm::operator*(T, const glm::vec<1, T, Q>&)’
  357 |         GLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> operator*(T scalar, vec<1, T, Q> const& v)
      |                                                       ^~~~~~~~
/usr/include/glm/detail/type_vec1.inl:357:55: note:   template argument deduction/substitution failed:
In file included from main.cpp:10:
projectiles.h:87:59: note:   mismatched types ‘const glm::vec<1, T, Q>’ and ‘int’
   87 |                         locations[i] += trajectories[i] * elapsed_time/1000.0f;
      |                                                           ^~~~~~~~~~~~
In file included from /usr/include/glm/detail/type_vec1.hpp:307,
                 from /usr/include/glm/exponential.hpp:17,
                 from /usr/include/glm/detail/func_geometric.inl:1,
                 from /usr/include/glm/geometric.hpp:116,
                 from /usr/include/glm/detail/func_matrix.inl:1,
                 from /usr/include/glm/matrix.hpp:161,
                 from /usr/include/glm/detail/type_mat2x2.inl:1,
                 from /usr/include/glm/detail/type_mat2x2.hpp:176,
                 from /usr/include/glm/ext/matrix_double2x2.hpp:5,
                 from /usr/include/glm/mat2x2.hpp:5,
                 from /usr/include/glm/glm.hpp:119,
                 from game.h:8,
                 from main.cpp:7:
/usr/include/glm/detail/type_vec1.inl:364:55: note: candidate: ‘template<class T, glm::qualifier Q> constexpr glm::vec<1, T, Q> glm::operator*(const glm::vec<1, T, Q>&, const glm::vec<1, T, Q>&)’
  364 |         GLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> operator*(vec<1, T, Q> const& v1, vec<1, T, Q> const& v2)
      |                                                       ^~~~~~~~
/usr/include/glm/detail/type_vec1.inl:364:55: note:   template argument deduction/substitution failed:
In file included from main.cpp:10:
projectiles.h:87:59: note:   template argument ‘3’ does not match ‘1’
   87 |                         locations[i] += trajectories[i] * elapsed_time/1000.0f;
      |                                                           ^~~~~~~~~~~~
In file included from /usr/include/glm/detail/type_quat.hpp:185,
                 from /usr/include/glm/ext/quaternion_float.hpp:23,
                 from /usr/include/glm/gtc/quaternion.hpp:21,
                 from /usr/include/glm/gtc/type_ptr.hpp:37,
                 from game.h:10,
                 from main.cpp:7:
/usr/include/glm/detail/type_quat.inl:337:52: note: candidate: ‘template<class T, glm::qualifier Q> constexpr glm::qua<T, Q> glm::operator*(const glm::qua<T, Q>&, const glm::qua<T, Q>&)’
  337 |         GLM_FUNC_QUALIFIER GLM_CONSTEXPR qua<T, Q> operator*(qua<T, Q> const& q, qua<T, Q> const& p)
      |                                                    ^~~~~~~~
/usr/include/glm/detail/type_quat.inl:337:52: note:   template argument deduction/substitution failed:
In file included from main.cpp:10:
projectiles.h:87:59: note:   ‘__gnu_cxx::__alloc_traits<std::allocator<glm::vec<3, float, glm::packed_highp> >, glm::vec<3, float, glm::packed_highp> >::value_type’ {aka ‘glm::vec<3, float, glm::packed_highp>’} is not derived from ‘const glm::qua<T, Q>’
   87 |                         locations[i] += trajectories[i] * elapsed_time/1000.0f;
      |                                                           ^~~~~~~~~~~~
In file included from /usr/include/glm/detail/type_quat.hpp:185,
                 from /usr/include/glm/ext/quaternion_float.hpp:23,
                 from /usr/include/glm/gtc/quaternion.hpp:21,
                 from /usr/include/glm/gtc/type_ptr.hpp:37,
                 from game.h:10,
                 from main.cpp:7:
/usr/include/glm/detail/type_quat.inl:343:55: note: candidate: ‘template<class T, glm::qualifier Q> constexpr glm::vec<3, T, Q> glm::operator*(const glm::qua<T, Q>&, const glm::vec<3, T, Q>&)’
  343 |         GLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q> operator*(qua<T, Q> const& q, vec<3, T, Q> const& v)
      |                                                       ^~~~~~~~
/usr/include/glm/detail/type_quat.inl:343:55: note:   template argument deduction/substitution failed:
In file included from main.cpp:10:
projectiles.h:87:59: note:   ‘__gnu_cxx::__alloc_traits<std::allocator<glm::vec<3, float, glm::packed_highp> >, glm::vec<3, float, glm::packed_highp> >::value_type’ {aka ‘glm::vec<3, float, glm::packed_highp>’} is not derived from ‘const glm::qua<T, Q>’
   87 |                         locations[i] += trajectories[i] * elapsed_time/1000.0f;
      |                                                           ^~~~~~~~~~~~
In file included from /usr/include/glm/detail/type_quat.hpp:185,
                 from /usr/include/glm/ext/quaternion_float.hpp:23,
                 from /usr/include/glm/gtc/quaternion.hpp:21,
                 from /usr/include/glm/gtc/type_ptr.hpp:37,
                 from game.h:10,
                 from main.cpp:7:
/usr/include/glm/detail/type_quat.inl:353:55: note: candidate: ‘template<class T, glm::qualifier Q> constexpr glm::vec<3, T, Q> glm::operator*(const glm::vec<3, T, Q>&, const glm::qua<T, Q>&)’
  353 |         GLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q> operator*(vec<3, T, Q> const& v, qua<T, Q> const& q)
      |                                                       ^~~~~~~~
/usr/include/glm/detail/type_quat.inl:353:55: note:   template argument deduction/substitution failed:
In file included from main.cpp:10:
projectiles.h:87:59: note:   mismatched types ‘const glm::qua<T, Q>’ and ‘int’
   87 |                         locations[i] += trajectories[i] * elapsed_time/1000.0f;
      |                                                           ^~~~~~~~~~~~
In file included from /usr/include/glm/detail/type_quat.hpp:185,
                 from /usr/include/glm/ext/quaternion_float.hpp:23,
                 from /usr/include/glm/gtc/quaternion.hpp:21,
                 from /usr/include/glm/gtc/type_ptr.hpp:37,
                 from game.h:10,
                 from main.cpp:7:
/usr/include/glm/detail/type_quat.inl:359:55: note: candidate: ‘template<class T, glm::qualifier Q> constexpr glm::vec<4, T, Q> glm::operator*(const glm::qua<T, Q>&, const glm::vec<4, T, Q>&)’
  359 |         GLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q> operator*(qua<T, Q> const& q, vec<4, T, Q> const& v)
      |                                                       ^~~~~~~~
/usr/include/glm/detail/type_quat.inl:359:55: note:   template argument deduction/substitution failed:
In file included from main.cpp:10:
projectiles.h:87:59: note:   ‘__gnu_cxx::__alloc_traits<std::allocator<glm::vec<3, float, glm::packed_highp> >, glm::vec<3, float, glm::packed_highp> >::value_type’ {aka ‘glm::vec<3, float, glm::packed_highp>’} is not derived from ‘const glm::qua<T, Q>’
   87 |                         locations[i] += trajectories[i] * elapsed_time/1000.0f;
      |                                                           ^~~~~~~~~~~~
In file included from /usr/include/glm/detail/type_quat.hpp:185,
                 from /usr/include/glm/ext/quaternion_float.hpp:23,
                 from /usr/include/glm/gtc/quaternion.hpp:21,
                 from /usr/include/glm/gtc/type_ptr.hpp:37,
                 from game.h:10,
                 from main.cpp:7:
/usr/include/glm/detail/type_quat.inl:365:55: note: candidate: ‘template<class T, glm::qualifier Q> constexpr glm::vec<4, T, Q> glm::operator*(const glm::vec<4, T, Q>&, const glm::qua<T, Q>&)’
  365 |         GLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q> operator*(vec<4, T, Q> const& v, qua<T, Q> const& q)
      |                                                       ^~~~~~~~
/usr/include/glm/detail/type_quat.inl:365:55: note:   template argument deduction/substitution failed:
In file included from main.cpp:10:
projectiles.h:87:59: note:   template argument ‘3’ does not match ‘4’
   87 |                         locations[i] += trajectories[i] * elapsed_time/1000.0f;
      |                                                           ^~~~~~~~~~~~
In file included from /usr/include/glm/detail/type_quat.hpp:185,
                 from /usr/include/glm/ext/quaternion_float.hpp:23,
                 from /usr/include/glm/gtc/quaternion.hpp:21,
                 from /usr/include/glm/gtc/type_ptr.hpp:37,
                 from game.h:10,
                 from main.cpp:7:
/usr/include/glm/detail/type_quat.inl:371:52: note: candidate: ‘template<class T, glm::qualifier Q> constexpr glm::qua<T, Q> glm::operator*(const glm::qua<T, Q>&, const T&)’
  371 |         GLM_FUNC_QUALIFIER GLM_CONSTEXPR qua<T, Q> operator*(qua<T, Q> const& q, T const& s)
      |                                                    ^~~~~~~~
/usr/include/glm/detail/type_quat.inl:371:52: note:   template argument deduction/substitution failed:
In file included from main.cpp:10:
projectiles.h:87:59: note:   ‘__gnu_cxx::__alloc_traits<std::allocator<glm::vec<3, float, glm::packed_highp> >, glm::vec<3, float, glm::packed_highp> >::value_type’ {aka ‘glm::vec<3, float, glm::packed_highp>’} is not derived from ‘const glm::qua<T, Q>’
   87 |                         locations[i] += trajectories[i] * elapsed_time/1000.0f;
      |                                                           ^~~~~~~~~~~~
In file included from /usr/include/glm/detail/type_quat.hpp:185,
                 from /usr/include/glm/ext/quaternion_float.hpp:23,
                 from /usr/include/glm/gtc/quaternion.hpp:21,
                 from /usr/include/glm/gtc/type_ptr.hpp:37,
                 from game.h:10,
                 from main.cpp:7:
/usr/include/glm/detail/type_quat.inl:378:52: note: candidate: ‘template<class T, glm::qualifier Q> constexpr glm::qua<T, Q> glm::operator*(const T&, const glm::qua<T, Q>&)’
  378 |         GLM_FUNC_QUALIFIER GLM_CONSTEXPR qua<T, Q> operator*(T const& s, qua<T, Q> const& q)
      |                                                    ^~~~~~~~
/usr/include/glm/detail/type_quat.inl:378:52: note:   template argument deduction/substitution failed:
In file included from main.cpp:10:
projectiles.h:87:59: note:   mismatched types ‘const glm::qua<T, Q>’ and ‘int’
   87 |                         locations[i] += trajectories[i] * elapsed_time/1000.0f;
      |                                                           ^~~~~~~~~~~~
make: *** [<builtin>: main.o] Error 1
