15 #ifndef GLM_ENABLE_EXPERIMENTAL    16 #   error "GLM: GLM_GTX_hash is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."    21 #include "../vec2.hpp"    22 #include "../vec3.hpp"    23 #include "../vec4.hpp"    24 #include "../gtc/vec1.hpp"    26 #include "../gtc/quaternion.hpp"    27 #include "../gtx/dual_quaternion.hpp"    29 #include "../mat2x2.hpp"    30 #include "../mat2x3.hpp"    31 #include "../mat2x4.hpp"    33 #include "../mat3x2.hpp"    34 #include "../mat3x3.hpp"    35 #include "../mat3x4.hpp"    37 #include "../mat4x2.hpp"    38 #include "../mat4x3.hpp"    39 #include "../mat4x4.hpp"    41 #if !GLM_HAS_CXX11_STL    42 #   error "GLM_GTX_hash requires C++11 standard library support"    47     template<
typename T, glm::qualifier Q>
    48     struct hash<
glm::vec<1, T,Q> >
    50         GLM_FUNC_DECL 
size_t operator()(glm::vec<1, T, Q> 
const& v) 
const;
    53     template<
typename T, glm::qualifier Q>
    54     struct hash<
glm::vec<2, T,Q> >
    56         GLM_FUNC_DECL 
size_t operator()(glm::vec<2, T, Q> 
const& v) 
const;
    59     template<
typename T, glm::qualifier Q>
    60     struct hash<
glm::vec<3, T,Q> >
    62         GLM_FUNC_DECL 
size_t operator()(glm::vec<3, T, Q> 
const& v) 
const;
    65     template<
typename T, glm::qualifier Q>
    66     struct hash<
glm::vec<4, T,Q> >
    68         GLM_FUNC_DECL 
size_t operator()(glm::vec<4, T, Q> 
const& v) 
const;
    71     template<
typename T, glm::qualifier Q>
    72     struct hash<
glm::tquat<T,Q>>
    74         GLM_FUNC_DECL 
size_t operator()(glm::tquat<T, Q> 
const& q) 
const;
    77     template<
typename T, glm::qualifier Q>
    78     struct hash<
glm::tdualquat<T,Q> >
    80         GLM_FUNC_DECL 
size_t operator()(glm::tdualquat<T,Q> 
const& q) 
const;
    83     template<
typename T, glm::qualifier Q>
    84     struct hash<
glm::mat<2, 2, T,Q> >
    86         GLM_FUNC_DECL 
size_t operator()(glm::mat<2, 2, T,Q> 
const& m) 
const;
    89     template<
typename T, glm::qualifier Q>
    90     struct hash<
glm::mat<2, 3, T,Q> >
    92         GLM_FUNC_DECL 
size_t operator()(glm::mat<2, 3, T,Q> 
const& m) 
const;
    95     template<
typename T, glm::qualifier Q>
    96     struct hash<
glm::mat<2, 4, T,Q> >
    98         GLM_FUNC_DECL 
size_t operator()(glm::mat<2, 4, T,Q> 
const& m) 
const;
   101     template<
typename T, glm::qualifier Q>
   102     struct hash<
glm::mat<3, 2, T,Q> >
   104         GLM_FUNC_DECL 
size_t operator()(glm::mat<3, 2, T,Q> 
const& m) 
const;
   107     template<
typename T, glm::qualifier Q>
   108     struct hash<
glm::mat<3, 3, T,Q> >
   110         GLM_FUNC_DECL 
size_t operator()(glm::mat<3, 3, T,Q> 
const& m) 
const;
   113     template<
typename T, glm::qualifier Q>
   114     struct hash<
glm::mat<3, 4, T,Q> >
   116         GLM_FUNC_DECL 
size_t operator()(glm::mat<3, 4, T,Q> 
const& m) 
const;
   119     template<
typename T, glm::qualifier Q>
   120     struct hash<
glm::mat<4, 2, T,Q> >
   122         GLM_FUNC_DECL 
size_t operator()(glm::mat<4, 2, T,Q> 
const& m) 
const;
   125     template<
typename T, glm::qualifier Q>
   126     struct hash<
glm::mat<4, 3, T,Q> >
   128         GLM_FUNC_DECL 
size_t operator()(glm::mat<4, 3, T,Q> 
const& m) 
const;
   131     template<
typename T, glm::qualifier Q>
   132     struct hash<
glm::mat<4, 4, T,Q> >
   134         GLM_FUNC_DECL 
size_t operator()(glm::mat<4, 4, T,Q> 
const& m) 
const;