12     template<
typename T, qualifier Q>
    13     struct mat<4, 4, T, Q>
    15         typedef vec<4, T, Q> col_type;
    16         typedef vec<4, T, Q> row_type;
    17         typedef mat<4, 4, T, Q> type;
    18         typedef mat<4, 4, T, Q> transpose_type;
    27         typedef length_t length_type;
    28         GLM_FUNC_DECL 
static GLM_CONSTEXPR length_type 
length(){
return 4;}
    30         GLM_FUNC_DECL col_type & operator[](length_type i);
    31         GLM_FUNC_DECL GLM_CONSTEXPR col_type 
const& operator[](length_type i) 
const;
    35         GLM_FUNC_DECL GLM_CONSTEXPR mat() GLM_DEFAULT;
    37         GLM_FUNC_DECL GLM_CONSTEXPR mat(mat<4, 4, T, P> const& m);
    39         GLM_FUNC_DECL explicit GLM_CONSTEXPR mat(T const& x);
    40         GLM_FUNC_DECL GLM_CONSTEXPR mat(
    41             T const& x0, T const& y0, T const& z0, T const& w0,
    42             T const& x1, T const& y1, T const& z1, T const& w1,
    43             T const& x2, T const& y2, T const& z2, T const& w2,
    44             T const& x3, T const& y3, T const& z3, T const& w3);
    45         GLM_FUNC_DECL GLM_CONSTEXPR mat(
    54             typename X1, typename Y1, typename Z1, typename W1,
    55             typename X2, typename Y2, typename Z2, typename W2,
    56             typename X3, typename Y3, typename Z3, typename W3,
    57             typename X4, typename Y4, typename Z4, typename W4>
    58         GLM_FUNC_DECL GLM_CONSTEXPR mat(
    59             X1 const& x1, Y1 const& y1, Z1 const& z1, W1 const& w1,
    60             X2 const& x2, Y2 const& y2, Z2 const& z2, W2 const& w2,
    61             X3 const& x3, Y3 const& y3, Z3 const& z3, W3 const& w3,
    62             X4 const& x4, Y4 const& y4, Z4 const& z4, W4 const& w4);
    64         template<typename V1, typename V2, typename V3, typename V4>
    65         GLM_FUNC_DECL GLM_CONSTEXPR mat(
    66             vec<4, V1, Q> const& v1,
    67             vec<4, V2, Q> const& v2,
    68             vec<4, V3, Q> const& v3,
    69             vec<4, V4, Q> const& v4);
    73         template<typename U, qualifier P>
    74         GLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<4, 4, U, P> const& m);
    76         GLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<2, 2, T, Q> const& x);
    77         GLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<3, 3, T, Q> const& x);
    78         GLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<2, 3, T, Q> const& x);
    79         GLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<3, 2, T, Q> const& x);
    80         GLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<2, 4, T, Q> const& x);
    81         GLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<4, 2, T, Q> const& x);
    82         GLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<3, 4, T, Q> const& x);
    83         GLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<4, 3, T, Q> const& x);
    88         GLM_FUNC_DECL mat<4, 4, T, Q> & operator=(mat<4, 4, U, Q> const& m);
    90         GLM_FUNC_DECL mat<4, 4, T, Q> & operator+=(U s);
    92         GLM_FUNC_DECL mat<4, 4, T, Q> & operator+=(mat<4, 4, U, Q> const& m);
    94         GLM_FUNC_DECL mat<4, 4, T, Q> & operator-=(U s);
    96         GLM_FUNC_DECL mat<4, 4, T, Q> & operator-=(mat<4, 4, U, Q> const& m);
    98         GLM_FUNC_DECL mat<4, 4, T, Q> & operator*=(U s);
   100         GLM_FUNC_DECL mat<4, 4, T, Q> & operator*=(mat<4, 4, U, Q> const& m);
   102         GLM_FUNC_DECL mat<4, 4, T, Q> & operator/=(U s);
   104         GLM_FUNC_DECL mat<4, 4, T, Q> & operator/=(mat<4, 4, U, Q> const& m);
   108         GLM_FUNC_DECL mat<4, 4, T, Q> & operator++();
   109         GLM_FUNC_DECL mat<4, 4, T, Q> & operator--();
   110         GLM_FUNC_DECL mat<4, 4, T, Q> operator++(
int);
   111         GLM_FUNC_DECL mat<4, 4, T, Q> operator--(
int);
   116     template<typename T, qualifier Q>
   117     GLM_FUNC_DECL mat<4, 4, T, Q> operator+(mat<4, 4, T, Q> const& m);
   119     template<typename T, qualifier Q>
   120     GLM_FUNC_DECL mat<4, 4, T, Q> operator-(mat<4, 4, T, Q> const& m);
   124     template<typename T, qualifier Q>
   125     GLM_FUNC_DECL mat<4, 4, T, Q> operator+(mat<4, 4, T, Q> const& m, T const& s);
   127     template<typename T, qualifier Q>
   128     GLM_FUNC_DECL mat<4, 4, T, Q> operator+(T const& s, mat<4, 4, T, Q> const& m);
   130     template<typename T, qualifier Q>
   131     GLM_FUNC_DECL mat<4, 4, T, Q> operator+(mat<4, 4, T, Q> const& m1, mat<4, 4, T, Q> const& m2);
   133     template<typename T, qualifier Q>
   134     GLM_FUNC_DECL mat<4, 4, T, Q> operator-(mat<4, 4, T, Q> const& m, T const& s);
   136     template<typename T, qualifier Q>
   137     GLM_FUNC_DECL mat<4, 4, T, Q> operator-(T const& s, mat<4, 4, T, Q> const& m);
   139     template<typename T, qualifier Q>
   140     GLM_FUNC_DECL mat<4, 4, T, Q> operator-(mat<4, 4, T, Q> const& m1,  mat<4, 4, T, Q> const& m2);
   142     template<typename T, qualifier Q>
   143     GLM_FUNC_DECL mat<4, 4, T, Q> operator*(mat<4, 4, T, Q> const& m, T const& s);
   145     template<typename T, qualifier Q>
   146     GLM_FUNC_DECL mat<4, 4, T, Q> operator*(T const& s, mat<4, 4, T, Q> const& m);
   148     template<typename T, qualifier Q>
   149     GLM_FUNC_DECL typename mat<4, 4, T, Q>::col_type operator*(mat<4, 4, T, Q> const& m, typename mat<4, 4, T, Q>::row_type const& v);
   151     template<typename T, qualifier Q>
   152     GLM_FUNC_DECL typename mat<4, 4, T, Q>::row_type operator*(typename mat<4, 4, T, Q>::col_type const& v, mat<4, 4, T, Q> const& m);
   154     template<typename T, qualifier Q>
   155     GLM_FUNC_DECL mat<2, 4, T, Q> operator*(mat<4, 4, T, Q> const& m1, mat<2, 4, T, Q> const& m2);
   157     template<typename T, qualifier Q>
   158     GLM_FUNC_DECL mat<3, 4, T, Q> operator*(mat<4, 4, T, Q> const& m1, mat<3, 4, T, Q> const& m2);
   160     template<typename T, qualifier Q>
   161     GLM_FUNC_DECL mat<4, 4, T, Q> operator*(mat<4, 4, T, Q> const& m1, mat<4, 4, T, Q> const& m2);
   163     template<typename T, qualifier Q>
   164     GLM_FUNC_DECL mat<4, 4, T, Q> operator/(mat<4, 4, T, Q> const& m, T const& s);
   166     template<typename T, qualifier Q>
   167     GLM_FUNC_DECL mat<4, 4, T, Q> operator/(T const& s, mat<4, 4, T, Q> const& m);
   169     template<typename T, qualifier Q>
   170     GLM_FUNC_DECL typename mat<4, 4, T, Q>::col_type operator/(mat<4, 4, T, Q> const& m, typename mat<4, 4, T, Q>::row_type const& v);
   172     template<typename T, qualifier Q>
   173     GLM_FUNC_DECL typename mat<4, 4, T, Q>::row_type operator/(typename mat<4, 4, T, Q>::col_type const& v, mat<4, 4, T, Q> const& m);
   175     template<typename T, qualifier Q>
   176     GLM_FUNC_DECL mat<4, 4, T, Q> operator/(mat<4, 4, T, Q> const& m1,  mat<4, 4, T, Q> const& m2);
   180     template<typename T, qualifier Q>
   181     GLM_FUNC_DECL 
bool operator==(mat<4, 4, T, Q> const& m1, mat<4, 4, T, Q> const& m2);
   183     template<typename T, qualifier Q>
   184     GLM_FUNC_DECL 
bool operator!=(mat<4, 4, T, Q> const& m1, mat<4, 4, T, Q> const& m2);
   187 #ifndef GLM_EXTERNAL_TEMPLATE   188 #include "type_mat4x4.inl"   189 #endif//GLM_EXTERNAL_TEMPLATE 
GLM_FUNC_DECL T length(qua< T, Q > const &q)
Returns the norm of a quaternions.