`saturate(T x)` and `atan2(T x, T y)` have precision qualifiers as function template parameters, but they don't use (or need) them.
Removed these two qualifiers
template<typenameT,qualifierQ>GLM_FUNC_QUALIFIERvec<3,T,Q>lerp(constvec<3,T,Q>&x,constvec<3,T,Q>&y,constvec<3,T,Q>&a){returnmix(x,y,a);}//!< \brief Returns the component-wise result of x * (1.0 - a) + y * a, i.e., the linear blend of x and y using vector a. The value for a is not restricted to the range [0, 1]. (From GLM_GTX_compatibility)
template<typenameT,qualifierQ>GLM_FUNC_QUALIFIERvec<4,T,Q>lerp(constvec<4,T,Q>&x,constvec<4,T,Q>&y,constvec<4,T,Q>&a){returnmix(x,y,a);}//!< \brief Returns the component-wise result of x * (1.0 - a) + y * a, i.e., the linear blend of x and y using vector a. The value for a is not restricted to the range [0, 1]. (From GLM_GTX_compatibility)
template<typenameT,qualifierQ>GLM_FUNC_QUALIFIERTsaturate(Tx){returnclamp(x,T(0),T(1));}//!< \brief Returns clamp(x, 0, 1) for each component in x. (From GLM_GTX_compatibility)
template<typenameT>GLM_FUNC_QUALIFIERTsaturate(Tx){returnclamp(x,T(0),T(1));}//!< \brief Returns clamp(x, 0, 1) for each component in x. (From GLM_GTX_compatibility)
template<typenameT,qualifierQ>GLM_FUNC_QUALIFIERvec<2,T,Q>saturate(constvec<2,T,Q>&x){returnclamp(x,T(0),T(1));}//!< \brief Returns clamp(x, 0, 1) for each component in x. (From GLM_GTX_compatibility)
template<typenameT,qualifierQ>GLM_FUNC_QUALIFIERvec<3,T,Q>saturate(constvec<3,T,Q>&x){returnclamp(x,T(0),T(1));}//!< \brief Returns clamp(x, 0, 1) for each component in x. (From GLM_GTX_compatibility)
template<typenameT,qualifierQ>GLM_FUNC_QUALIFIERvec<4,T,Q>saturate(constvec<4,T,Q>&x){returnclamp(x,T(0),T(1));}//!< \brief Returns clamp(x, 0, 1) for each component in x. (From GLM_GTX_compatibility)
template<typenameT,qualifierQ>GLM_FUNC_QUALIFIERTatan2(Tx,Ty){returnatan(x,y);}//!< \brief Arc tangent. Returns an angle whose tangent is y/x. The signs of x and y are used to determine what quadrant the angle is in. The range of values returned by this function is [-PI, PI]. Results are undefined if x and y are both 0. (From GLM_GTX_compatibility)
template<typenameT>GLM_FUNC_QUALIFIERTatan2(Tx,Ty){returnatan(x,y);}//!< \brief Arc tangent. Returns an angle whose tangent is y/x. The signs of x and y are used to determine what quadrant the angle is in. The range of values returned by this function is [-PI, PI]. Results are undefined if x and y are both 0. (From GLM_GTX_compatibility)
template<typenameT,qualifierQ>GLM_FUNC_QUALIFIERvec<2,T,Q>atan2(constvec<2,T,Q>&x,constvec<2,T,Q>&y){returnatan(x,y);}//!< \brief Arc tangent. Returns an angle whose tangent is y/x. The signs of x and y are used to determine what quadrant the angle is in. The range of values returned by this function is [-PI, PI]. Results are undefined if x and y are both 0. (From GLM_GTX_compatibility)
template<typenameT,qualifierQ>GLM_FUNC_QUALIFIERvec<3,T,Q>atan2(constvec<3,T,Q>&x,constvec<3,T,Q>&y){returnatan(x,y);}//!< \brief Arc tangent. Returns an angle whose tangent is y/x. The signs of x and y are used to determine what quadrant the angle is in. The range of values returned by this function is [-PI, PI]. Results are undefined if x and y are both 0. (From GLM_GTX_compatibility)
template<typenameT,qualifierQ>GLM_FUNC_QUALIFIERvec<4,T,Q>atan2(constvec<4,T,Q>&x,constvec<4,T,Q>&y){returnatan(x,y);}//!< \brief Arc tangent. Returns an angle whose tangent is y/x. The signs of x and y are used to determine what quadrant the angle is in. The range of values returned by this function is [-PI, PI]. Results are undefined if x and y are both 0. (From GLM_GTX_compatibility)