namespace glm { template GLM_CONSTEXPR T& get(vec& v) { static_assert(I < L, "Index out of bounds"); return v[I]; } template GLM_CONSTEXPR T const& get(vec const& v) { static_assert(I < L, "Index out of bounds"); return v[I]; } template GLM_CONSTEXPR vec& get(mat& m) { static_assert(I < C, "Index out of bounds"); return m[I]; } template GLM_CONSTEXPR vec const& get(mat const& m) { static_assert(I < C, "Index out of bounds"); return m[I]; } template GLM_CONSTEXPR T& get(qua& q) { static_assert(I < 4, "Index out of bounds"); return q[I]; } template GLM_CONSTEXPR T const& get(qua const& q) { static_assert(I < 4, "Index out of bounds"); return q[I]; } template GLM_CONSTEXPR T get(vec const&& v) { static_assert(I < L, "Index out of bounds"); return v[I]; } template GLM_CONSTEXPR vec get(mat const&& m) { static_assert(I < C, "Index out of bounds"); return m[I]; } template GLM_CONSTEXPR T get(qua const&& q) { static_assert(I < 4, "Index out of bounds"); return q[I]; } }//namespace glm