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