namespace glm { /* namespace details { template struct known_length_iterator; } */ /// @addtogroup gtx_iteration /// @{ template GLM_FUNC_QUALIFIER GLM_CONSTEXPR T* begin(vec& v) { return &v.x; } template GLM_FUNC_QUALIFIER GLM_CONSTEXPR T* begin(mat& m) { return &m[0].x; } template GLM_FUNC_QUALIFIER GLM_CONSTEXPR T* begin(qua& q) { return &q[0]; } template GLM_FUNC_QUALIFIER GLM_CONSTEXPR const T* begin(const vec& v) { return &v.x; } template GLM_FUNC_QUALIFIER GLM_CONSTEXPR const T* begin(const mat& m) { return &m[0].x; } template GLM_FUNC_QUALIFIER GLM_CONSTEXPR const T* begin(const qua& q) { return &q[0]; } template GLM_FUNC_QUALIFIER GLM_CONSTEXPR T* end(vec& v) { return (&v.x) + L; } template GLM_FUNC_QUALIFIER GLM_CONSTEXPR T* end(mat& m) { return (&m[0].x) + C*R; } template GLM_FUNC_QUALIFIER GLM_CONSTEXPR T* end(qua& q) { return (&q[0]) + 4; } template GLM_FUNC_QUALIFIER GLM_CONSTEXPR const T* end(const vec& v) { return (&v.x) + L; } template GLM_FUNC_QUALIFIER GLM_CONSTEXPR const T* end(const mat& m) { return (&m[0].x) + C*R; } template GLM_FUNC_QUALIFIER GLM_CONSTEXPR const T* end(const qua& q) { return (&q[0]) + 4; } // Reverse iteration // rbegin,rend template GLM_FUNC_QUALIFIER GLM_CONSTEXPR std::reverse_iterator rbegin(vec& v) { return std::reverse_iterator(end(v)); } template GLM_FUNC_QUALIFIER GLM_CONSTEXPR std::reverse_iterator rbegin(mat& m) { return std::reverse_iterator(end(m)); } template GLM_FUNC_QUALIFIER GLM_CONSTEXPR std::reverse_iterator rbegin(qua& q) { return std::reverse_iterator(end(q)); } template GLM_FUNC_QUALIFIER GLM_CONSTEXPR std::reverse_iterator rbegin(const vec& v) { return std::reverse_iterator(end(v)); } template GLM_FUNC_QUALIFIER GLM_CONSTEXPR std::reverse_iterator rbegin(const mat& m) { return std::reverse_iterator(end(m)); } template GLM_FUNC_QUALIFIER GLM_CONSTEXPR std::reverse_iterator rbegin(const qua& q) { return std::reverse_iterator(end(q)); } template GLM_FUNC_QUALIFIER GLM_CONSTEXPR std::reverse_iterator rend(vec& v) { return std::reverse_iterator(begin(v)); } template GLM_FUNC_QUALIFIER GLM_CONSTEXPR std::reverse_iterator rend(mat& m) { return std::reverse_iterator(begin(m)); } template GLM_FUNC_QUALIFIER GLM_CONSTEXPR std::reverse_iterator rend(qua& q) { return std::reverse_iterator(begin(q)); } template GLM_FUNC_QUALIFIER GLM_CONSTEXPR std::reverse_iterator rend(const vec& v) { return std::reverse_iterator(begin(v)); } template GLM_FUNC_QUALIFIER GLM_CONSTEXPR std::reverse_iterator rend(const mat& m) { return std::reverse_iterator(begin(m)); } template GLM_FUNC_QUALIFIER GLM_CONSTEXPR std::reverse_iterator rend(const qua& q) { return std::reverse_iterator(begin(q)); } /// @} }//namespace glm