7                 template<
template<length_t C, length_t R, 
typename T, qualifier Q> 
class mat, length_t C, length_t R, 
typename Ret, 
typename T, qualifier Q>
 
    8                 struct matrix_functor_1 {
 
   11                 template<
template<length_t C, length_t R, 
typename T, qualifier Q> 
class mat, 
typename Ret, 
typename T, qualifier Q>
 
   12                 struct matrix_functor_1<mat, 2, 2, Ret, T, Q> {
 
   13                         GLM_FUNC_QUALIFIER GLM_CONSTEXPR 
static mat<2, 2, T, Q> call(Ret (*Func)(T x), mat<2, 2, T, Q> 
const &x) {
 
   14                                 return mat<2, 2, Ret, Q>(
 
   15                                         Func(x[0][0]), Func(x[0][1]),
 
   16                                         Func(x[1][0]), Func(x[1][1])
 
   21                 template<
template<length_t C, length_t R, 
typename T, qualifier Q> 
class mat, 
typename Ret, 
typename T, qualifier Q>
 
   22                 struct matrix_functor_1<mat, 2, 3, Ret, T, Q> {
 
   24                         GLM_FUNC_QUALIFIER GLM_CONSTEXPR 
static mat<2, 3, T, Q> call(Ret (*Func)(T x), mat<2, 3, T, Q> 
const &x) {
 
   25                                 return mat<2, 3, Ret, Q>(
 
   26                                         Func(x[0][0]), Func(x[0][1]), Func(x[0][2]),
 
   27                                         Func(x[1][0]), Func(x[1][1]), Func(x[1][2])
 
   33                 template<
template<length_t C, length_t R, 
typename T, qualifier Q> 
class mat, 
typename Ret, 
typename T, qualifier Q>
 
   34                 struct matrix_functor_1<mat, 2, 4, Ret, T, Q> {
 
   36                         GLM_FUNC_QUALIFIER GLM_CONSTEXPR 
static mat<2, 4, T, Q> call(Ret (*Func)(T x), mat<2, 4, T, Q> 
const &x) {
 
   37                                 return mat<2, 4, Ret, Q>(
 
   38                                         Func(x[0][0]), Func(x[0][1]), Func(x[0][2]), Func(x[0][3]),
 
   39                                         Func(x[1][0]), Func(x[1][1]), Func(x[1][2]), Func(x[1][3])
 
   45                 template<
template<length_t C, length_t R, 
typename T, qualifier Q> 
class mat, 
typename Ret, 
typename T, qualifier Q>
 
   46                 struct matrix_functor_1<mat, 3, 2, Ret, T, Q> {
 
   48                         GLM_FUNC_QUALIFIER GLM_CONSTEXPR 
static mat<3, 2, T, Q> call(Ret (*Func)(T x), mat<3, 2, T, Q> 
const &x) {
 
   49                                 return mat<3, 2, Ret, Q>(
 
   50                                         Func(x[0][0]), Func(x[0][1]),
 
   51                                         Func(x[1][0]), Func(x[1][1]),
 
   52                                         Func(x[2][0]), Func(x[2][1])
 
   58                 template<
template<length_t C, length_t R, 
typename T, qualifier Q> 
class mat, 
typename Ret, 
typename T, qualifier Q>
 
   59                 struct matrix_functor_1<mat, 3, 3, Ret, T, Q> {
 
   61                         GLM_FUNC_QUALIFIER GLM_CONSTEXPR 
static mat<3, 3, T, Q> call(Ret (*Func)(T x), mat<3, 3, T, Q> 
const &x) {
 
   62                                 return mat<3, 3, Ret, Q>(
 
   63                                         Func(x[0][0]), Func(x[0][1]), Func(x[0][2]),
 
   64                                         Func(x[1][0]), Func(x[1][1]), Func(x[1][2]),
 
   65                                         Func(x[2][0]), Func(x[2][1]), Func(x[2][2])
 
   71                 template<
template<length_t C, length_t R, 
typename T, qualifier Q> 
class mat, 
typename Ret, 
typename T, qualifier Q>
 
   72                 struct matrix_functor_1<mat, 3, 4, Ret, T, Q> {
 
   74                         GLM_FUNC_QUALIFIER GLM_CONSTEXPR 
static mat<3, 4, T, Q> call(Ret (*Func)(T x), mat<3, 4, T, Q> 
const &x) {
 
   75                                 return mat<3, 4, Ret, Q>(
 
   76                                         Func(x[0][0]), Func(x[0][1]), Func(x[0][2]), Func(x[0][3]),
 
   77                                         Func(x[1][0]), Func(x[1][1]), Func(x[1][2]), Func(x[1][3]),
 
   78                                         Func(x[2][0]), Func(x[2][1]), Func(x[2][2]), Func(x[2][3])
 
   84                 template<
template<length_t C, length_t R, 
typename T, qualifier Q> 
class mat, 
typename Ret, 
typename T, qualifier Q>
 
   85                 struct matrix_functor_1<mat, 4, 2, Ret, T, Q> {
 
   87                         GLM_FUNC_QUALIFIER GLM_CONSTEXPR 
static mat<4, 2, T, Q> call(Ret (*Func)(T x), mat<4, 2, T, Q> 
const &x) {
 
   88                                 return mat<4, 2, Ret, Q>(
 
   89                                         Func(x[0][0]), Func(x[0][1]),
 
   90                                         Func(x[1][0]), Func(x[1][1]),
 
   91                                         Func(x[2][0]), Func(x[2][1]),
 
   92                                         Func(x[3][0]), Func(x[3][1])
 
   98                 template<
template<length_t C, length_t R, 
typename T, qualifier Q> 
class mat, 
typename Ret, 
typename T, qualifier Q>
 
   99                 struct matrix_functor_1<mat, 4, 3, Ret, T, Q> {
 
  101                         GLM_FUNC_QUALIFIER GLM_CONSTEXPR 
static mat<4, 3, T, Q> call(Ret (*Func)(T x), mat<4, 3, T, Q> 
const &x) {
 
  102                                 return mat<4, 3, Ret, Q>(
 
  103                                         Func(x[0][0]), Func(x[0][1]), Func(x[0][2]),
 
  104                                         Func(x[1][0]), Func(x[1][1]), Func(x[1][2]),
 
  105                                         Func(x[2][0]), Func(x[2][1]), Func(x[2][2]),
 
  106                                         Func(x[3][0]), Func(x[3][1]), Func(x[3][2])
 
  112                 template<
template<length_t C, length_t R, 
typename T, qualifier Q> 
class mat, 
typename Ret, 
typename T, qualifier Q>
 
  113                 struct matrix_functor_1<mat, 4, 4, Ret, T, Q> {
 
  115                         GLM_FUNC_QUALIFIER GLM_CONSTEXPR 
static mat<4, 4, T, Q> call(Ret (*Func)(T x), mat<4, 4, T, Q> 
const &x) {
 
  116                                 return mat<4, 4, Ret, Q>(
 
  117                                         Func(x[0][0]), Func(x[0][1]), Func(x[0][2]), Func(x[0][3]),
 
  118                                         Func(x[1][0]), Func(x[1][1]), Func(x[1][2]), Func(x[1][3]),
 
  119                                         Func(x[2][0]), Func(x[2][1]), Func(x[2][2]), Func(x[2][3]),
 
  120                                         Func(x[3][0]), Func(x[3][1]), Func(x[3][2]), Func(x[3][3])