Browse Source

added GLM_CONSTEXPR_CXX14 flag to vec<>::operator= and mat<>::operator=

Chris Helmich 8 years ago
parent
commit
3aebd8f8fd

+ 2 - 2
glm/detail/type_mat2x2.hpp

@@ -75,10 +75,10 @@ namespace glm
 
 
 		// -- Unary arithmetic operators --
 		// -- Unary arithmetic operators --
 
 
-		GLM_FUNC_DECL mat<2, 2, T, Q> & operator=(mat<2, 2, T, Q> const& v) GLM_DEFAULT;
+		GLM_FUNC_DECL GLM_CONSTEXPR_CXX14 mat<2, 2, T, Q> & operator=(mat<2, 2, T, Q> const& v) GLM_DEFAULT;
 
 
 		template<typename U>
 		template<typename U>
-		GLM_FUNC_DECL mat<2, 2, T, Q> & operator=(mat<2, 2, U, Q> const& m);
+		GLM_FUNC_DECL GLM_CONSTEXPR_CXX14 mat<2, 2, T, Q> & operator=(mat<2, 2, U, Q> const& m);
 		template<typename U>
 		template<typename U>
 		GLM_FUNC_DECL mat<2, 2, T, Q> & operator+=(U s);
 		GLM_FUNC_DECL mat<2, 2, T, Q> & operator+=(U s);
 		template<typename U>
 		template<typename U>

+ 10 - 10
glm/detail/type_mat2x2.inl

@@ -38,7 +38,7 @@ namespace glm
 	}
 	}
 
 
 	template<typename T, qualifier Q>
 	template<typename T, qualifier Q>
-	GLM_FUNC_QUALIFIER GLM_CONSTEXPR_CTOR_CXX14 mat<2, 2, T, Q>::mat 
+	GLM_FUNC_QUALIFIER GLM_CONSTEXPR_CTOR_CXX14 mat<2, 2, T, Q>::mat
 	(
 	(
 		T const& x0, T const& y0,
 		T const& x0, T const& y0,
 		T const& x1, T const& y1
 		T const& x1, T const& y1
@@ -59,7 +59,7 @@ namespace glm
 
 
 	template<typename T, qualifier Q>
 	template<typename T, qualifier Q>
 	template<typename X1, typename Y1, typename X2, typename Y2>
 	template<typename X1, typename Y1, typename X2, typename Y2>
-	GLM_FUNC_QUALIFIER GLM_CONSTEXPR_CTOR_CXX14 mat<2, 2, T, Q>::mat 
+	GLM_FUNC_QUALIFIER GLM_CONSTEXPR_CTOR_CXX14 mat<2, 2, T, Q>::mat
 	(
 	(
 		X1 const& x1, Y1 const& y1,
 		X1 const& x1, Y1 const& y1,
 		X2 const& x2, Y2 const& y2
 		X2 const& x2, Y2 const& y2
@@ -68,7 +68,7 @@ namespace glm
 		this->value[0] = col_type(static_cast<T>(x1), value_type(y1));
 		this->value[0] = col_type(static_cast<T>(x1), value_type(y1));
 		this->value[1] = col_type(static_cast<T>(x2), value_type(y2));
 		this->value[1] = col_type(static_cast<T>(x2), value_type(y2));
 	}
 	}
-	
+
 	template<typename T, qualifier Q>
 	template<typename T, qualifier Q>
 	template<typename V1, typename V2>
 	template<typename V1, typename V2>
 	GLM_FUNC_QUALIFIER GLM_CONSTEXPR_CTOR_CXX14 mat<2, 2, T, Q>::mat(vec<2, V1, Q> const& v1, vec<2, V2, Q> const& v2)
 	GLM_FUNC_QUALIFIER GLM_CONSTEXPR_CTOR_CXX14 mat<2, 2, T, Q>::mat(vec<2, V1, Q> const& v1, vec<2, V2, Q> const& v2)
@@ -101,7 +101,7 @@ namespace glm
 		this->value[1] = col_type(m[1]);
 		this->value[1] = col_type(m[1]);
 	}
 	}
 
 
-	template<typename T, qualifier Q> 
+	template<typename T, qualifier Q>
 	GLM_FUNC_QUALIFIER GLM_CONSTEXPR_CTOR_CXX14 mat<2, 2, T, Q>::mat(mat<2, 3, T, Q> const& m)
 	GLM_FUNC_QUALIFIER GLM_CONSTEXPR_CTOR_CXX14 mat<2, 2, T, Q>::mat(mat<2, 3, T, Q> const& m)
 	{
 	{
 		this->value[0] = col_type(m[0]);
 		this->value[0] = col_type(m[0]);
@@ -163,7 +163,7 @@ namespace glm
 
 
 #	if !GLM_HAS_DEFAULTED_FUNCTIONS
 #	if !GLM_HAS_DEFAULTED_FUNCTIONS
 		template<typename T, qualifier Q>
 		template<typename T, qualifier Q>
-		GLM_FUNC_QUALIFIER mat<2, 2, T, Q>& mat<2, 2, T, Q>::operator=(mat<2, 2, T, Q> const& m)
+		GLM_FUNC_QUALIFIER GLM_CONSTEXPR_CXX14 mat<2, 2, T, Q>& mat<2, 2, T, Q>::operator=(mat<2, 2, T, Q> const& m)
 		{
 		{
 			this->value[0] = m[0];
 			this->value[0] = m[0];
 			this->value[1] = m[1];
 			this->value[1] = m[1];
@@ -173,7 +173,7 @@ namespace glm
 
 
 	template<typename T, qualifier Q>
 	template<typename T, qualifier Q>
 	template<typename U>
 	template<typename U>
-	GLM_FUNC_QUALIFIER mat<2, 2, T, Q>& mat<2, 2, T, Q>::operator=(mat<2, 2, U, Q> const& m)
+	GLM_FUNC_QUALIFIER GLM_CONSTEXPR_CXX14 mat<2, 2, T, Q>& mat<2, 2, T, Q>::operator=(mat<2, 2, U, Q> const& m)
 	{
 	{
 		this->value[0] = m[0];
 		this->value[0] = m[0];
 		this->value[1] = m[1];
 		this->value[1] = m[1];
@@ -294,7 +294,7 @@ namespace glm
 	GLM_FUNC_QUALIFIER mat<2, 2, T, Q> operator-(mat<2, 2, T, Q> const& m)
 	GLM_FUNC_QUALIFIER mat<2, 2, T, Q> operator-(mat<2, 2, T, Q> const& m)
 	{
 	{
 		return mat<2, 2, T, Q>(
 		return mat<2, 2, T, Q>(
-			-m[0], 
+			-m[0],
 			-m[1]);
 			-m[1]);
 	}
 	}
 
 
@@ -424,7 +424,7 @@ namespace glm
 			m1[0][1] * m2[3][0] + m1[1][1] * m2[3][1]);
 			m1[0][1] * m2[3][0] + m1[1][1] * m2[3][1]);
 	}
 	}
 
 
-	template<typename T, qualifier Q> 
+	template<typename T, qualifier Q>
 	GLM_FUNC_QUALIFIER mat<2, 2, T, Q> operator/(mat<2, 2, T, Q> const& m, T scalar)
 	GLM_FUNC_QUALIFIER mat<2, 2, T, Q> operator/(mat<2, 2, T, Q> const& m, T scalar)
 	{
 	{
 		return mat<2, 2, T, Q>(
 		return mat<2, 2, T, Q>(
@@ -432,7 +432,7 @@ namespace glm
 			m[1] / scalar);
 			m[1] / scalar);
 	}
 	}
 
 
-	template<typename T, qualifier Q> 
+	template<typename T, qualifier Q>
 	GLM_FUNC_QUALIFIER mat<2, 2, T, Q> operator/(T scalar, mat<2, 2, T, Q> const& m)
 	GLM_FUNC_QUALIFIER mat<2, 2, T, Q> operator/(T scalar, mat<2, 2, T, Q> const& m)
 	{
 	{
 		return mat<2, 2, T, Q>(
 		return mat<2, 2, T, Q>(
@@ -454,7 +454,7 @@ namespace glm
 
 
 	template<typename T, qualifier Q>
 	template<typename T, qualifier Q>
 	GLM_FUNC_QUALIFIER mat<2, 2, T, Q> operator/(mat<2, 2, T, Q> const& m1, mat<2, 2, T, Q> const& m2)
 	GLM_FUNC_QUALIFIER mat<2, 2, T, Q> operator/(mat<2, 2, T, Q> const& m1, mat<2, 2, T, Q> const& m2)
-	{	
+	{
 		mat<2, 2, T, Q> m1_copy(m1);
 		mat<2, 2, T, Q> m1_copy(m1);
 		return m1_copy /= m2;
 		return m1_copy /= m2;
 	}
 	}

+ 2 - 2
glm/detail/type_mat2x3.hpp

@@ -76,10 +76,10 @@ namespace glm
 
 
 		// -- Unary arithmetic operators --
 		// -- Unary arithmetic operators --
 
 
-		GLM_FUNC_DECL mat<2, 3, T, Q> & operator=(mat<2, 3, T, Q> const& m) GLM_DEFAULT;
+		GLM_FUNC_DECL GLM_CONSTEXPR_CXX14 mat<2, 3, T, Q> & operator=(mat<2, 3, T, Q> const& m) GLM_DEFAULT;
 
 
 		template<typename U>
 		template<typename U>
-		GLM_FUNC_DECL mat<2, 3, T, Q> & operator=(mat<2, 3, U, Q> const& m);
+		GLM_FUNC_DECL GLM_CONSTEXPR_CXX14 mat<2, 3, T, Q> & operator=(mat<2, 3, U, Q> const& m);
 		template<typename U>
 		template<typename U>
 		GLM_FUNC_DECL mat<2, 3, T, Q> & operator+=(U s);
 		GLM_FUNC_DECL mat<2, 3, T, Q> & operator+=(U s);
 		template<typename U>
 		template<typename U>

+ 21 - 21
glm/detail/type_mat2x3.inl

@@ -28,15 +28,15 @@ namespace glm
 		this->value[1] = m.value[1];
 		this->value[1] = m.value[1];
 	}
 	}
 
 
-	template<typename T, qualifier Q> 
+	template<typename T, qualifier Q>
 	GLM_FUNC_QUALIFIER GLM_CONSTEXPR_CTOR_CXX14 mat<2, 3, T, Q>::mat(T scalar)
 	GLM_FUNC_QUALIFIER GLM_CONSTEXPR_CTOR_CXX14 mat<2, 3, T, Q>::mat(T scalar)
 	{
 	{
 		this->value[0] = col_type(scalar, 0, 0);
 		this->value[0] = col_type(scalar, 0, 0);
 		this->value[1] = col_type(0, scalar, 0);
 		this->value[1] = col_type(0, scalar, 0);
 	}
 	}
 
 
-	template<typename T, qualifier Q> 
-	GLM_FUNC_QUALIFIER GLM_CONSTEXPR_CTOR_CXX14 mat<2, 3, T, Q>::mat 
+	template<typename T, qualifier Q>
+	GLM_FUNC_QUALIFIER GLM_CONSTEXPR_CTOR_CXX14 mat<2, 3, T, Q>::mat
 	(
 	(
 		T x0, T y0, T z0,
 		T x0, T y0, T z0,
 		T x1, T y1, T z1
 		T x1, T y1, T z1
@@ -46,7 +46,7 @@ namespace glm
 		this->value[1] = col_type(x1, y1, z1);
 		this->value[1] = col_type(x1, y1, z1);
 	}
 	}
 
 
-	template<typename T, qualifier Q> 
+	template<typename T, qualifier Q>
 	GLM_FUNC_QUALIFIER GLM_CONSTEXPR_CTOR_CXX14 mat<2, 3, T, Q>::mat(col_type const& v0, col_type const& v1)
 	GLM_FUNC_QUALIFIER GLM_CONSTEXPR_CTOR_CXX14 mat<2, 3, T, Q>::mat(col_type const& v0, col_type const& v1)
 	{
 	{
 		this->value[0] = v0;
 		this->value[0] = v0;
@@ -59,7 +59,7 @@ namespace glm
 	template<
 	template<
 		typename X1, typename Y1, typename Z1,
 		typename X1, typename Y1, typename Z1,
 		typename X2, typename Y2, typename Z2>
 		typename X2, typename Y2, typename Z2>
-	GLM_FUNC_QUALIFIER GLM_CONSTEXPR_CTOR_CXX14 mat<2, 3, T, Q>::mat 
+	GLM_FUNC_QUALIFIER GLM_CONSTEXPR_CTOR_CXX14 mat<2, 3, T, Q>::mat
 	(
 	(
 		X1 x1, Y1 y1, Z1 z1,
 		X1 x1, Y1 y1, Z1 z1,
 		X2 x2, Y2 y2, Z2 z2
 		X2 x2, Y2 y2, Z2 z2
@@ -68,7 +68,7 @@ namespace glm
 		this->value[0] = col_type(static_cast<T>(x1), value_type(y1), value_type(z1));
 		this->value[0] = col_type(static_cast<T>(x1), value_type(y1), value_type(z1));
 		this->value[1] = col_type(static_cast<T>(x2), value_type(y2), value_type(z2));
 		this->value[1] = col_type(static_cast<T>(x2), value_type(y2), value_type(z2));
 	}
 	}
-	
+
 	template<typename T, qualifier Q>
 	template<typename T, qualifier Q>
 	template<typename V1, typename V2>
 	template<typename V1, typename V2>
 	GLM_FUNC_QUALIFIER GLM_CONSTEXPR_CTOR_CXX14 mat<2, 3, T, Q>::mat(vec<3, V1, Q> const& v1, vec<3, V2, Q> const& v2)
 	GLM_FUNC_QUALIFIER GLM_CONSTEXPR_CTOR_CXX14 mat<2, 3, T, Q>::mat(vec<3, V1, Q> const& v1, vec<3, V2, Q> const& v2)
@@ -87,56 +87,56 @@ namespace glm
 		this->value[1] = col_type(m[1]);
 		this->value[1] = col_type(m[1]);
 	}
 	}
 
 
-	template<typename T, qualifier Q> 
+	template<typename T, qualifier Q>
 	GLM_FUNC_QUALIFIER GLM_CONSTEXPR_CTOR_CXX14 mat<2, 3, T, Q>::mat(mat<2, 2, T, Q> const& m)
 	GLM_FUNC_QUALIFIER GLM_CONSTEXPR_CTOR_CXX14 mat<2, 3, T, Q>::mat(mat<2, 2, T, Q> const& m)
 	{
 	{
 		this->value[0] = col_type(m[0], 0);
 		this->value[0] = col_type(m[0], 0);
 		this->value[1] = col_type(m[1], 0);
 		this->value[1] = col_type(m[1], 0);
 	}
 	}
 
 
-	template<typename T, qualifier Q> 
+	template<typename T, qualifier Q>
 	GLM_FUNC_QUALIFIER GLM_CONSTEXPR_CTOR_CXX14  mat<2, 3, T, Q>::mat(mat<3, 3, T, Q> const& m)
 	GLM_FUNC_QUALIFIER GLM_CONSTEXPR_CTOR_CXX14  mat<2, 3, T, Q>::mat(mat<3, 3, T, Q> const& m)
 	{
 	{
 		this->value[0] = col_type(m[0]);
 		this->value[0] = col_type(m[0]);
 		this->value[1] = col_type(m[1]);
 		this->value[1] = col_type(m[1]);
 	}
 	}
 
 
-	template<typename T, qualifier Q> 
+	template<typename T, qualifier Q>
 	GLM_FUNC_QUALIFIER GLM_CONSTEXPR_CTOR_CXX14 mat<2, 3, T, Q>::mat(mat<4, 4, T, Q> const& m)
 	GLM_FUNC_QUALIFIER GLM_CONSTEXPR_CTOR_CXX14 mat<2, 3, T, Q>::mat(mat<4, 4, T, Q> const& m)
 	{
 	{
 		this->value[0] = col_type(m[0]);
 		this->value[0] = col_type(m[0]);
 		this->value[1] = col_type(m[1]);
 		this->value[1] = col_type(m[1]);
 	}
 	}
 
 
-	template<typename T, qualifier Q> 
+	template<typename T, qualifier Q>
 	GLM_FUNC_QUALIFIER GLM_CONSTEXPR_CTOR_CXX14 mat<2, 3, T, Q>::mat(mat<2, 4, T, Q> const& m)
 	GLM_FUNC_QUALIFIER GLM_CONSTEXPR_CTOR_CXX14 mat<2, 3, T, Q>::mat(mat<2, 4, T, Q> const& m)
 	{
 	{
 		this->value[0] = col_type(m[0]);
 		this->value[0] = col_type(m[0]);
 		this->value[1] = col_type(m[1]);
 		this->value[1] = col_type(m[1]);
 	}
 	}
 
 
-	template<typename T, qualifier Q> 
+	template<typename T, qualifier Q>
 	GLM_FUNC_QUALIFIER GLM_CONSTEXPR_CTOR_CXX14 mat<2, 3, T, Q>::mat(mat<3, 2, T, Q> const& m)
 	GLM_FUNC_QUALIFIER GLM_CONSTEXPR_CTOR_CXX14 mat<2, 3, T, Q>::mat(mat<3, 2, T, Q> const& m)
 	{
 	{
 		this->value[0] = col_type(m[0], 0);
 		this->value[0] = col_type(m[0], 0);
 		this->value[1] = col_type(m[1], 0);
 		this->value[1] = col_type(m[1], 0);
 	}
 	}
 
 
-	template<typename T, qualifier Q> 
+	template<typename T, qualifier Q>
 	GLM_FUNC_QUALIFIER GLM_CONSTEXPR_CTOR_CXX14 mat<2, 3, T, Q>::mat(mat<3, 4, T, Q> const& m)
 	GLM_FUNC_QUALIFIER GLM_CONSTEXPR_CTOR_CXX14 mat<2, 3, T, Q>::mat(mat<3, 4, T, Q> const& m)
 	{
 	{
 		this->value[0] = col_type(m[0]);
 		this->value[0] = col_type(m[0]);
 		this->value[1] = col_type(m[1]);
 		this->value[1] = col_type(m[1]);
 	}
 	}
 
 
-	template<typename T, qualifier Q> 
+	template<typename T, qualifier Q>
 	GLM_FUNC_QUALIFIER GLM_CONSTEXPR_CTOR_CXX14 mat<2, 3, T, Q>::mat(mat<4, 2, T, Q> const& m)
 	GLM_FUNC_QUALIFIER GLM_CONSTEXPR_CTOR_CXX14 mat<2, 3, T, Q>::mat(mat<4, 2, T, Q> const& m)
 	{
 	{
 		this->value[0] = col_type(m[0], 0);
 		this->value[0] = col_type(m[0], 0);
 		this->value[1] = col_type(m[1], 0);
 		this->value[1] = col_type(m[1], 0);
 	}
 	}
 
 
-	template<typename T, qualifier Q> 
+	template<typename T, qualifier Q>
 	GLM_FUNC_QUALIFIER GLM_CONSTEXPR_CTOR_CXX14 mat<2, 3, T, Q>::mat(mat<4, 3, T, Q> const& m)
 	GLM_FUNC_QUALIFIER GLM_CONSTEXPR_CTOR_CXX14 mat<2, 3, T, Q>::mat(mat<4, 3, T, Q> const& m)
 	{
 	{
 		this->value[0] = m[0];
 		this->value[0] = m[0];
@@ -163,7 +163,7 @@ namespace glm
 
 
 #	if !GLM_HAS_DEFAULTED_FUNCTIONS
 #	if !GLM_HAS_DEFAULTED_FUNCTIONS
 		template<typename T, qualifier Q>
 		template<typename T, qualifier Q>
-		GLM_FUNC_QUALIFIER mat<2, 3, T, Q>& mat<2, 3, T, Q>::operator=(mat<2, 3, T, Q> const& m)
+		GLM_FUNC_QUALIFIER GLM_CONSTEXPR_CXX14 mat<2, 3, T, Q>& mat<2, 3, T, Q>::operator=(mat<2, 3, T, Q> const& m)
 		{
 		{
 			this->value[0] = m[0];
 			this->value[0] = m[0];
 			this->value[1] = m[1];
 			this->value[1] = m[1];
@@ -173,7 +173,7 @@ namespace glm
 
 
 	template<typename T, qualifier Q>
 	template<typename T, qualifier Q>
 	template<typename U>
 	template<typename U>
-	GLM_FUNC_QUALIFIER mat<2, 3, T, Q>& mat<2, 3, T, Q>::operator=(mat<2, 3, U, Q> const& m)
+	GLM_FUNC_QUALIFIER GLM_CONSTEXPR_CXX14 mat<2, 3, T, Q>& mat<2, 3, T, Q>::operator=(mat<2, 3, U, Q> const& m)
 	{
 	{
 		this->value[0] = m[0];
 		this->value[0] = m[0];
 		this->value[1] = m[1];
 		this->value[1] = m[1];
@@ -286,7 +286,7 @@ namespace glm
 
 
 	// -- Binary arithmetic operators --
 	// -- Binary arithmetic operators --
 
 
-	template<typename T, qualifier Q> 
+	template<typename T, qualifier Q>
 	GLM_FUNC_QUALIFIER mat<2, 3, T, Q> operator+(mat<2, 3, T, Q> const& m, T scalar)
 	GLM_FUNC_QUALIFIER mat<2, 3, T, Q> operator+(mat<2, 3, T, Q> const& m, T scalar)
 	{
 	{
 		return mat<2, 3, T, Q>(
 		return mat<2, 3, T, Q>(
@@ -294,7 +294,7 @@ namespace glm
 			m[1] + scalar);
 			m[1] + scalar);
 	}
 	}
 
 
-	template<typename T, qualifier Q> 
+	template<typename T, qualifier Q>
 	GLM_FUNC_QUALIFIER mat<2, 3, T, Q> operator+(mat<2, 3, T, Q> const& m1, mat<2, 3, T, Q> const& m2)
 	GLM_FUNC_QUALIFIER mat<2, 3, T, Q> operator+(mat<2, 3, T, Q> const& m1, mat<2, 3, T, Q> const& m2)
 	{
 	{
 		return mat<2, 3, T, Q>(
 		return mat<2, 3, T, Q>(
@@ -302,7 +302,7 @@ namespace glm
 			m1[1] + m2[1]);
 			m1[1] + m2[1]);
 	}
 	}
 
 
-	template<typename T, qualifier Q> 
+	template<typename T, qualifier Q>
 	GLM_FUNC_QUALIFIER mat<2, 3, T, Q> operator-(mat<2, 3, T, Q> const& m, T scalar)
 	GLM_FUNC_QUALIFIER mat<2, 3, T, Q> operator-(mat<2, 3, T, Q> const& m, T scalar)
 	{
 	{
 		return mat<2, 3, T, Q>(
 		return mat<2, 3, T, Q>(
@@ -310,7 +310,7 @@ namespace glm
 			m[1] - scalar);
 			m[1] - scalar);
 	}
 	}
 
 
-	template<typename T, qualifier Q> 
+	template<typename T, qualifier Q>
 	GLM_FUNC_QUALIFIER mat<2, 3, T, Q> operator-(mat<2, 3, T, Q> const& m1, mat<2, 3, T, Q> const& m2)
 	GLM_FUNC_QUALIFIER mat<2, 3, T, Q> operator-(mat<2, 3, T, Q> const& m1, mat<2, 3, T, Q> const& m2)
 	{
 	{
 		return mat<2, 3, T, Q>(
 		return mat<2, 3, T, Q>(
@@ -318,7 +318,7 @@ namespace glm
 			m1[1] - m2[1]);
 			m1[1] - m2[1]);
 	}
 	}
 
 
-	template<typename T, qualifier Q> 
+	template<typename T, qualifier Q>
 	GLM_FUNC_QUALIFIER mat<2, 3, T, Q> operator*(mat<2, 3, T, Q> const& m, T scalar)
 	GLM_FUNC_QUALIFIER mat<2, 3, T, Q> operator*(mat<2, 3, T, Q> const& m, T scalar)
 	{
 	{
 		return mat<2, 3, T, Q>(
 		return mat<2, 3, T, Q>(

+ 2 - 2
glm/detail/type_mat2x4.hpp

@@ -78,10 +78,10 @@ namespace glm
 
 
 		// -- Unary arithmetic operators --
 		// -- Unary arithmetic operators --
 
 
-		GLM_FUNC_DECL mat<2, 4, T, Q> & operator=(mat<2, 4, T, Q> const& m) GLM_DEFAULT;
+		GLM_FUNC_DECL GLM_CONSTEXPR_CXX14 mat<2, 4, T, Q> & operator=(mat<2, 4, T, Q> const& m) GLM_DEFAULT;
 
 
 		template<typename U>
 		template<typename U>
-		GLM_FUNC_DECL mat<2, 4, T, Q> & operator=(mat<2, 4, U, Q> const& m);
+		GLM_FUNC_DECL GLM_CONSTEXPR_CXX14 mat<2, 4, T, Q> & operator=(mat<2, 4, U, Q> const& m);
 		template<typename U>
 		template<typename U>
 		GLM_FUNC_DECL mat<2, 4, T, Q> & operator+=(U s);
 		GLM_FUNC_DECL mat<2, 4, T, Q> & operator+=(U s);
 		template<typename U>
 		template<typename U>

+ 8 - 8
glm/detail/type_mat2x4.inl

@@ -69,7 +69,7 @@ namespace glm
 		this->value[0] = col_type(static_cast<T>(x1), value_type(y1), value_type(z1), value_type(w1));
 		this->value[0] = col_type(static_cast<T>(x1), value_type(y1), value_type(z1), value_type(w1));
 		this->value[1] = col_type(static_cast<T>(x2), value_type(y2), value_type(z2), value_type(w2));
 		this->value[1] = col_type(static_cast<T>(x2), value_type(y2), value_type(z2), value_type(w2));
 	}
 	}
-	
+
 	template<typename T, qualifier Q>
 	template<typename T, qualifier Q>
 	template<typename V1, typename V2>
 	template<typename V1, typename V2>
 	GLM_FUNC_QUALIFIER GLM_CONSTEXPR_CTOR_CXX14 mat<2, 4, T, Q>::mat(vec<4, V1, Q> const& v1, vec<4, V2, Q> const& v2)
 	GLM_FUNC_QUALIFIER GLM_CONSTEXPR_CTOR_CXX14 mat<2, 4, T, Q>::mat(vec<4, V1, Q> const& v1, vec<4, V2, Q> const& v2)
@@ -164,7 +164,7 @@ namespace glm
 
 
 #	if !GLM_HAS_DEFAULTED_FUNCTIONS
 #	if !GLM_HAS_DEFAULTED_FUNCTIONS
 		template<typename T, qualifier Q>
 		template<typename T, qualifier Q>
-		GLM_FUNC_QUALIFIER mat<2, 4, T, Q>& mat<2, 4, T, Q>::operator=(mat<2, 4, T, Q> const& m)
+		GLM_FUNC_QUALIFIER GLM_CONSTEXPR_CXX14 mat<2, 4, T, Q>& mat<2, 4, T, Q>::operator=(mat<2, 4, T, Q> const& m)
 		{
 		{
 			this->value[0] = m[0];
 			this->value[0] = m[0];
 			this->value[1] = m[1];
 			this->value[1] = m[1];
@@ -174,7 +174,7 @@ namespace glm
 
 
 	template<typename T, qualifier Q>
 	template<typename T, qualifier Q>
 	template<typename U>
 	template<typename U>
-	GLM_FUNC_QUALIFIER mat<2, 4, T, Q>& mat<2, 4, T, Q>::operator=(mat<2, 4, U, Q> const& m)
+	GLM_FUNC_QUALIFIER GLM_CONSTEXPR_CXX14 mat<2, 4, T, Q>& mat<2, 4, T, Q>::operator=(mat<2, 4, U, Q> const& m)
 	{
 	{
 		this->value[0] = m[0];
 		this->value[0] = m[0];
 		this->value[1] = m[1];
 		this->value[1] = m[1];
@@ -281,7 +281,7 @@ namespace glm
 	GLM_FUNC_QUALIFIER mat<2, 4, T, Q> operator-(mat<2, 4, T, Q> const& m)
 	GLM_FUNC_QUALIFIER mat<2, 4, T, Q> operator-(mat<2, 4, T, Q> const& m)
 	{
 	{
 		return mat<2, 4, T, Q>(
 		return mat<2, 4, T, Q>(
-			-m[0], 
+			-m[0],
 			-m[1]);
 			-m[1]);
 	}
 	}
 
 
@@ -295,7 +295,7 @@ namespace glm
 			m[1] + scalar);
 			m[1] + scalar);
 	}
 	}
 
 
-	template<typename T, qualifier Q> 
+	template<typename T, qualifier Q>
 	GLM_FUNC_QUALIFIER mat<2, 4, T, Q> operator+(mat<2, 4, T, Q> const& m1, mat<2, 4, T, Q> const& m2)
 	GLM_FUNC_QUALIFIER mat<2, 4, T, Q> operator+(mat<2, 4, T, Q> const& m1, mat<2, 4, T, Q> const& m2)
 	{
 	{
 		return mat<2, 4, T, Q>(
 		return mat<2, 4, T, Q>(
@@ -303,7 +303,7 @@ namespace glm
 			m1[1] + m2[1]);
 			m1[1] + m2[1]);
 	}
 	}
 
 
-	template<typename T, qualifier Q> 
+	template<typename T, qualifier Q>
 	GLM_FUNC_QUALIFIER mat<2, 4, T, Q> operator-(mat<2, 4, T, Q> const& m, T scalar)
 	GLM_FUNC_QUALIFIER mat<2, 4, T, Q> operator-(mat<2, 4, T, Q> const& m, T scalar)
 	{
 	{
 		return mat<2, 4, T, Q>(
 		return mat<2, 4, T, Q>(
@@ -327,7 +327,7 @@ namespace glm
 			m[1] * scalar);
 			m[1] * scalar);
 	}
 	}
 
 
-	template<typename T, qualifier Q> 
+	template<typename T, qualifier Q>
 	GLM_FUNC_QUALIFIER mat<2, 4, T, Q> operator*(T scalar, mat<2, 4, T, Q> const& m)
 	GLM_FUNC_QUALIFIER mat<2, 4, T, Q> operator*(T scalar, mat<2, 4, T, Q> const& m)
 	{
 	{
 		return mat<2, 4, T, Q>(
 		return mat<2, 4, T, Q>(
@@ -426,7 +426,7 @@ namespace glm
 			m1[0][3] * m2[2][0] + m1[1][3] * m2[2][1]);
 			m1[0][3] * m2[2][0] + m1[1][3] * m2[2][1]);
 	}
 	}
 
 
-	template<typename T, qualifier Q> 
+	template<typename T, qualifier Q>
 	GLM_FUNC_QUALIFIER mat<2, 4, T, Q> operator/(mat<2, 4, T, Q> const& m, T scalar)
 	GLM_FUNC_QUALIFIER mat<2, 4, T, Q> operator/(mat<2, 4, T, Q> const& m, T scalar)
 	{
 	{
 		return mat<2, 4, T, Q>(
 		return mat<2, 4, T, Q>(

+ 2 - 2
glm/detail/type_mat3x2.hpp

@@ -83,10 +83,10 @@ namespace glm
 
 
 		// -- Unary arithmetic operators --
 		// -- Unary arithmetic operators --
 
 
-		GLM_FUNC_DECL mat<3, 2, T, Q> & operator=(mat<3, 2, T, Q> const& m) GLM_DEFAULT;
+		GLM_FUNC_DECL GLM_CONSTEXPR_CXX14 mat<3, 2, T, Q> & operator=(mat<3, 2, T, Q> const& m) GLM_DEFAULT;
 
 
 		template<typename U>
 		template<typename U>
-		GLM_FUNC_DECL mat<3, 2, T, Q> & operator=(mat<3, 2, U, Q> const& m);
+		GLM_FUNC_DECL GLM_CONSTEXPR_CXX14 mat<3, 2, T, Q> & operator=(mat<3, 2, U, Q> const& m);
 		template<typename U>
 		template<typename U>
 		GLM_FUNC_DECL mat<3, 2, T, Q> & operator+=(U s);
 		GLM_FUNC_DECL mat<3, 2, T, Q> & operator+=(U s);
 		template<typename U>
 		template<typename U>

+ 2 - 2
glm/detail/type_mat3x2.inl

@@ -192,7 +192,7 @@ namespace glm
 
 
 #	if !GLM_HAS_DEFAULTED_FUNCTIONS
 #	if !GLM_HAS_DEFAULTED_FUNCTIONS
 		template<typename T, qualifier Q>
 		template<typename T, qualifier Q>
-		GLM_FUNC_QUALIFIER mat<3, 2, T, Q>& mat<3, 2, T, Q>::operator=(mat<3, 2, T, Q> const& m)
+		GLM_FUNC_QUALIFIER GLM_CONSTEXPR_CXX14 mat<3, 2, T, Q>& mat<3, 2, T, Q>::operator=(mat<3, 2, T, Q> const& m)
 		{
 		{
 			this->value[0] = m[0];
 			this->value[0] = m[0];
 			this->value[1] = m[1];
 			this->value[1] = m[1];
@@ -203,7 +203,7 @@ namespace glm
 
 
 	template<typename T, qualifier Q>
 	template<typename T, qualifier Q>
 	template<typename U>
 	template<typename U>
-	GLM_FUNC_QUALIFIER mat<3, 2, T, Q>& mat<3, 2, T, Q>::operator=(mat<3, 2, U, Q> const& m)
+	GLM_FUNC_QUALIFIER GLM_CONSTEXPR_CXX14 mat<3, 2, T, Q>& mat<3, 2, T, Q>::operator=(mat<3, 2, U, Q> const& m)
 	{
 	{
 		this->value[0] = m[0];
 		this->value[0] = m[0];
 		this->value[1] = m[1];
 		this->value[1] = m[1];

+ 2 - 2
glm/detail/type_mat3x3.hpp

@@ -82,10 +82,10 @@ namespace glm
 
 
 		// -- Unary arithmetic operators --
 		// -- Unary arithmetic operators --
 
 
-		GLM_FUNC_DECL mat<3, 3, T, Q> & operator=(mat<3, 3, T, Q> const& m) GLM_DEFAULT;
+		GLM_FUNC_DECL GLM_CONSTEXPR_CXX14 mat<3, 3, T, Q> & operator=(mat<3, 3, T, Q> const& m) GLM_DEFAULT;
 
 
 		template<typename U>
 		template<typename U>
-		GLM_FUNC_DECL mat<3, 3, T, Q> & operator=(mat<3, 3, U, Q> const& m);
+		GLM_FUNC_DECL GLM_CONSTEXPR_CXX14 mat<3, 3, T, Q> & operator=(mat<3, 3, U, Q> const& m);
 		template<typename U>
 		template<typename U>
 		GLM_FUNC_DECL mat<3, 3, T, Q> & operator+=(U s);
 		GLM_FUNC_DECL mat<3, 3, T, Q> & operator+=(U s);
 		template<typename U>
 		template<typename U>

+ 2 - 2
glm/detail/type_mat3x3.inl

@@ -194,7 +194,7 @@ namespace glm
 
 
 #	if !GLM_HAS_DEFAULTED_FUNCTIONS
 #	if !GLM_HAS_DEFAULTED_FUNCTIONS
 		template<typename T, qualifier Q>
 		template<typename T, qualifier Q>
-		GLM_FUNC_QUALIFIER mat<3, 3, T, Q> & mat<3, 3, T, Q>::operator=(mat<3, 3, T, Q> const& m)
+		GLM_FUNC_QUALIFIER GLM_CONSTEXPR_CXX14 mat<3, 3, T, Q> & mat<3, 3, T, Q>::operator=(mat<3, 3, T, Q> const& m)
 		{
 		{
 			this->value[0] = m[0];
 			this->value[0] = m[0];
 			this->value[1] = m[1];
 			this->value[1] = m[1];
@@ -205,7 +205,7 @@ namespace glm
 
 
 	template<typename T, qualifier Q>
 	template<typename T, qualifier Q>
 	template<typename U>
 	template<typename U>
-	GLM_FUNC_QUALIFIER mat<3, 3, T, Q> & mat<3, 3, T, Q>::operator=(mat<3, 3, U, Q> const& m)
+	GLM_FUNC_QUALIFIER GLM_CONSTEXPR_CXX14 mat<3, 3, T, Q> & mat<3, 3, T, Q>::operator=(mat<3, 3, U, Q> const& m)
 	{
 	{
 		this->value[0] = m[0];
 		this->value[0] = m[0];
 		this->value[1] = m[1];
 		this->value[1] = m[1];

+ 2 - 2
glm/detail/type_mat3x4.hpp

@@ -83,10 +83,10 @@ namespace glm
 
 
 		// -- Unary arithmetic operators --
 		// -- Unary arithmetic operators --
 
 
-		GLM_FUNC_DECL mat<3, 4, T, Q> & operator=(mat<3, 4, T, Q> const& m) GLM_DEFAULT;
+		GLM_FUNC_DECL GLM_CONSTEXPR_CXX14 mat<3, 4, T, Q> & operator=(mat<3, 4, T, Q> const& m) GLM_DEFAULT;
 
 
 		template<typename U>
 		template<typename U>
-		GLM_FUNC_DECL mat<3, 4, T, Q> & operator=(mat<3, 4, U, Q> const& m);
+		GLM_FUNC_DECL GLM_CONSTEXPR_CXX14 mat<3, 4, T, Q> & operator=(mat<3, 4, U, Q> const& m);
 		template<typename U>
 		template<typename U>
 		GLM_FUNC_DECL mat<3, 4, T, Q> & operator+=(U s);
 		GLM_FUNC_DECL mat<3, 4, T, Q> & operator+=(U s);
 		template<typename U>
 		template<typename U>

+ 4 - 4
glm/detail/type_mat3x4.inl

@@ -192,7 +192,7 @@ namespace glm
 
 
 #	if !GLM_HAS_DEFAULTED_FUNCTIONS
 #	if !GLM_HAS_DEFAULTED_FUNCTIONS
 		template<typename T, qualifier Q>
 		template<typename T, qualifier Q>
-		GLM_FUNC_QUALIFIER mat<3, 4, T, Q>& mat<3, 4, T, Q>::operator=(mat<3, 4, T, Q> const& m)
+		GLM_FUNC_QUALIFIER GLM_CONSTEXPR_CXX14 mat<3, 4, T, Q>& mat<3, 4, T, Q>::operator=(mat<3, 4, T, Q> const& m)
 		{
 		{
 			this->value[0] = m[0];
 			this->value[0] = m[0];
 			this->value[1] = m[1];
 			this->value[1] = m[1];
@@ -201,9 +201,9 @@ namespace glm
 		}
 		}
 #	endif//!GLM_HAS_DEFAULTED_FUNCTIONS
 #	endif//!GLM_HAS_DEFAULTED_FUNCTIONS
 
 
-	template<typename T, qualifier Q> 
-	template<typename U> 
-	GLM_FUNC_QUALIFIER mat<3, 4, T, Q>& mat<3, 4, T, Q>::operator=(mat<3, 4, U, Q> const& m)
+	template<typename T, qualifier Q>
+	template<typename U>
+	GLM_FUNC_QUALIFIER GLM_CONSTEXPR_CXX14 mat<3, 4, T, Q>& mat<3, 4, T, Q>::operator=(mat<3, 4, U, Q> const& m)
 	{
 	{
 		this->value[0] = m[0];
 		this->value[0] = m[0];
 		this->value[1] = m[1];
 		this->value[1] = m[1];

+ 2 - 2
glm/detail/type_mat4x2.hpp

@@ -88,10 +88,10 @@ namespace glm
 
 
 		// -- Unary arithmetic operators --
 		// -- Unary arithmetic operators --
 
 
-		GLM_FUNC_DECL mat<4, 2, T, Q> & operator=(mat<4, 2, T, Q> const& m) GLM_DEFAULT;
+		GLM_FUNC_DECL GLM_CONSTEXPR_CXX14 mat<4, 2, T, Q> & operator=(mat<4, 2, T, Q> const& m) GLM_DEFAULT;
 
 
 		template<typename U>
 		template<typename U>
-		GLM_FUNC_DECL mat<4, 2, T, Q> & operator=(mat<4, 2, U, Q> const& m);
+		GLM_FUNC_DECL GLM_CONSTEXPR_CXX14 mat<4, 2, T, Q> & operator=(mat<4, 2, U, Q> const& m);
 		template<typename U>
 		template<typename U>
 		GLM_FUNC_DECL mat<4, 2, T, Q> & operator+=(U s);
 		GLM_FUNC_DECL mat<4, 2, T, Q> & operator+=(U s);
 		template<typename U>
 		template<typename U>

+ 2 - 2
glm/detail/type_mat4x2.inl

@@ -213,7 +213,7 @@ namespace glm
 
 
 #	if !GLM_HAS_DEFAULTED_FUNCTIONS
 #	if !GLM_HAS_DEFAULTED_FUNCTIONS
 		template<typename T, qualifier Q>
 		template<typename T, qualifier Q>
-		GLM_FUNC_QUALIFIER mat<4, 2, T, Q>& mat<4, 2, T, Q>::operator=(mat<4, 2, T, Q> const& m)
+		GLM_FUNC_QUALIFIER GLM_CONSTEXPR_CXX14 mat<4, 2, T, Q>& mat<4, 2, T, Q>::operator=(mat<4, 2, T, Q> const& m)
 		{
 		{
 			this->value[0] = m[0];
 			this->value[0] = m[0];
 			this->value[1] = m[1];
 			this->value[1] = m[1];
@@ -225,7 +225,7 @@ namespace glm
 
 
 	template<typename T, qualifier Q>
 	template<typename T, qualifier Q>
 	template<typename U>
 	template<typename U>
-	GLM_FUNC_QUALIFIER mat<4, 2, T, Q>& mat<4, 2, T, Q>::operator=(mat<4, 2, U, Q> const& m)
+	GLM_FUNC_QUALIFIER GLM_CONSTEXPR_CXX14 mat<4, 2, T, Q>& mat<4, 2, T, Q>::operator=(mat<4, 2, U, Q> const& m)
 	{
 	{
 		this->value[0] = m[0];
 		this->value[0] = m[0];
 		this->value[1] = m[1];
 		this->value[1] = m[1];

+ 2 - 2
glm/detail/type_mat4x3.hpp

@@ -88,10 +88,10 @@ namespace glm
 
 
 		// -- Unary arithmetic operators --
 		// -- Unary arithmetic operators --
 
 
-		GLM_FUNC_DECL mat<4, 3, T, Q> & operator=(mat<4, 3, T, Q> const& m) GLM_DEFAULT;
+		GLM_FUNC_DECL GLM_CONSTEXPR_CXX14 mat<4, 3, T, Q> & operator=(mat<4, 3, T, Q> const& m) GLM_DEFAULT;
 
 
 		template<typename U>
 		template<typename U>
-		GLM_FUNC_DECL mat<4, 3, T, Q> & operator=(mat<4, 3, U, Q> const& m);
+		GLM_FUNC_DECL GLM_CONSTEXPR_CXX14 mat<4, 3, T, Q> & operator=(mat<4, 3, U, Q> const& m);
 		template<typename U>
 		template<typename U>
 		GLM_FUNC_DECL mat<4, 3, T, Q> & operator+=(U s);
 		GLM_FUNC_DECL mat<4, 3, T, Q> & operator+=(U s);
 		template<typename U>
 		template<typename U>

+ 2 - 2
glm/detail/type_mat4x3.inl

@@ -213,7 +213,7 @@ namespace glm
 
 
 #	if !GLM_HAS_DEFAULTED_FUNCTIONS
 #	if !GLM_HAS_DEFAULTED_FUNCTIONS
 		template<typename T, qualifier Q>
 		template<typename T, qualifier Q>
-		GLM_FUNC_QUALIFIER mat<4, 3, T, Q>& mat<4, 3, T, Q>::operator=(mat<4, 3, T, Q> const& m)
+		GLM_FUNC_QUALIFIER GLM_CONSTEXPR_CXX14 mat<4, 3, T, Q>& mat<4, 3, T, Q>::operator=(mat<4, 3, T, Q> const& m)
 		{
 		{
 			this->value[0] = m[0];
 			this->value[0] = m[0];
 			this->value[1] = m[1];
 			this->value[1] = m[1];
@@ -225,7 +225,7 @@ namespace glm
 
 
 	template<typename T, qualifier Q>
 	template<typename T, qualifier Q>
 	template<typename U>
 	template<typename U>
-	GLM_FUNC_QUALIFIER mat<4, 3, T, Q>& mat<4, 3, T, Q>::operator=(mat<4, 3, U, Q> const& m)
+	GLM_FUNC_QUALIFIER GLM_CONSTEXPR_CXX14 mat<4, 3, T, Q>& mat<4, 3, T, Q>::operator=(mat<4, 3, U, Q> const& m)
 	{
 	{
 		this->value[0] = m[0];
 		this->value[0] = m[0];
 		this->value[1] = m[1];
 		this->value[1] = m[1];

+ 2 - 2
glm/detail/type_mat4x4.hpp

@@ -87,10 +87,10 @@ namespace glm
 
 
 		// -- Unary arithmetic operators --
 		// -- Unary arithmetic operators --
 
 
-		GLM_FUNC_DECL mat<4, 4, T, Q> & operator=(mat<4, 4, T, Q> const& m) GLM_DEFAULT;
+		GLM_FUNC_DECL GLM_CONSTEXPR_CXX14 mat<4, 4, T, Q> & operator=(mat<4, 4, T, Q> const& m) GLM_DEFAULT;
 
 
 		template<typename U>
 		template<typename U>
-		GLM_FUNC_DECL mat<4, 4, T, Q> & operator=(mat<4, 4, U, Q> const& m);
+		GLM_FUNC_DECL GLM_CONSTEXPR_CXX14 mat<4, 4, T, Q> & operator=(mat<4, 4, U, Q> const& m);
 		template<typename U>
 		template<typename U>
 		GLM_FUNC_DECL mat<4, 4, T, Q> & operator+=(U s);
 		GLM_FUNC_DECL mat<4, 4, T, Q> & operator+=(U s);
 		template<typename U>
 		template<typename U>

+ 4 - 4
glm/detail/type_mat4x4.inl

@@ -240,7 +240,7 @@ namespace glm
 
 
 #	if !GLM_HAS_DEFAULTED_FUNCTIONS
 #	if !GLM_HAS_DEFAULTED_FUNCTIONS
 		template<typename T, qualifier Q>
 		template<typename T, qualifier Q>
-		GLM_FUNC_QUALIFIER mat<4, 4, T, Q>& mat<4, 4, T, Q>::operator=(mat<4, 4, T, Q> const& m)
+		GLM_FUNC_QUALIFIER GLM_CONSTEXPR_CXX14 mat<4, 4, T, Q>& mat<4, 4, T, Q>::operator=(mat<4, 4, T, Q> const& m)
 		{
 		{
 			//memcpy could be faster
 			//memcpy could be faster
 			//memcpy(&this->value, &m.value, 16 * sizeof(valType));
 			//memcpy(&this->value, &m.value, 16 * sizeof(valType));
@@ -252,9 +252,9 @@ namespace glm
 		}
 		}
 #	endif//!GLM_HAS_DEFAULTED_FUNCTIONS
 #	endif//!GLM_HAS_DEFAULTED_FUNCTIONS
 
 
-	template<typename T, qualifier Q> 
-	template<typename U> 
-	GLM_FUNC_QUALIFIER mat<4, 4, T, Q>& mat<4, 4, T, Q>::operator=(mat<4, 4, U, Q> const& m)
+	template<typename T, qualifier Q>
+	template<typename U>
+	GLM_FUNC_QUALIFIER GLM_CONSTEXPR_CXX14 mat<4, 4, T, Q>& mat<4, 4, T, Q>::operator=(mat<4, 4, U, Q> const& m)
 	{
 	{
 		//memcpy could be faster
 		//memcpy could be faster
 		//memcpy(&this->value, &m.value, 16 * sizeof(valType));
 		//memcpy(&this->value, &m.value, 16 * sizeof(valType));

+ 2 - 2
glm/detail/type_vec1.inl

@@ -77,7 +77,7 @@ namespace glm
 
 
 #	if !GLM_HAS_DEFAULTED_FUNCTIONS
 #	if !GLM_HAS_DEFAULTED_FUNCTIONS
 		template<typename T, qualifier Q>
 		template<typename T, qualifier Q>
-		GLM_FUNC_QUALIFIER vec<1, T, Q> & vec<1, T, Q>::operator=(vec<1, T, Q> const& v)
+		GLM_FUNC_QUALIFIER GLM_CONSTEXPR_CXX14 vec<1, T, Q> & vec<1, T, Q>::operator=(vec<1, T, Q> const& v)
 		{
 		{
 			this->x = v.x;
 			this->x = v.x;
 			return *this;
 			return *this;
@@ -86,7 +86,7 @@ namespace glm
 
 
 	template<typename T, qualifier Q>
 	template<typename T, qualifier Q>
 	template<typename U> 
 	template<typename U> 
-	GLM_FUNC_QUALIFIER vec<1, T, Q> & vec<1, T, Q>::operator=(vec<1, U, Q> const& v)
+	GLM_FUNC_QUALIFIER GLM_CONSTEXPR_CXX14 vec<1, T, Q> & vec<1, T, Q>::operator=(vec<1, U, Q> const& v)
 	{
 	{
 		this->x = static_cast<T>(v.x);
 		this->x = static_cast<T>(v.x);
 		return *this;
 		return *this;

+ 2 - 2
glm/detail/type_vec2.hpp

@@ -128,10 +128,10 @@ namespace glm
 
 
 		// -- Unary arithmetic operators --
 		// -- Unary arithmetic operators --
 
 
-		GLM_FUNC_DECL vec& operator=(vec const& v) GLM_DEFAULT;
+		GLM_FUNC_DECL GLM_CONSTEXPR_CXX14 vec& operator=(vec const& v) GLM_DEFAULT;
 
 
 		template<typename U>
 		template<typename U>
-		GLM_FUNC_DECL vec& operator=(vec<2, U, Q> const& v);
+		GLM_FUNC_DECL GLM_CONSTEXPR_CXX14 vec& operator=(vec<2, U, Q> const& v);
 		template<typename U>
 		template<typename U>
 		GLM_FUNC_DECL vec& operator+=(U scalar);
 		GLM_FUNC_DECL vec& operator+=(U scalar);
 		template<typename U>
 		template<typename U>

+ 2 - 2
glm/detail/type_vec2.inl

@@ -95,7 +95,7 @@ namespace glm
 
 
 #	if !GLM_HAS_DEFAULTED_FUNCTIONS
 #	if !GLM_HAS_DEFAULTED_FUNCTIONS
 		template<typename T, qualifier Q>
 		template<typename T, qualifier Q>
-		GLM_FUNC_QUALIFIER vec<2, T, Q> & vec<2, T, Q>::operator=(vec<2, T, Q> const& v)
+		GLM_FUNC_QUALIFIER GLM_CONSTEXPR_CXX14 vec<2, T, Q> & vec<2, T, Q>::operator=(vec<2, T, Q> const& v)
 		{
 		{
 			this->x = v.x;
 			this->x = v.x;
 			this->y = v.y;
 			this->y = v.y;
@@ -105,7 +105,7 @@ namespace glm
 
 
 	template<typename T, qualifier Q>
 	template<typename T, qualifier Q>
 	template<typename U>
 	template<typename U>
-	GLM_FUNC_QUALIFIER vec<2, T, Q> & vec<2, T, Q>::operator=(vec<2, U, Q> const& v)
+	GLM_FUNC_QUALIFIER GLM_CONSTEXPR_CXX14 vec<2, T, Q> & vec<2, T, Q>::operator=(vec<2, U, Q> const& v)
 	{
 	{
 		this->x = static_cast<T>(v.x);
 		this->x = static_cast<T>(v.x);
 		this->y = static_cast<T>(v.y);
 		this->y = static_cast<T>(v.y);

+ 2 - 2
glm/detail/type_vec3.hpp

@@ -149,10 +149,10 @@ namespace glm
 
 
 		// -- Unary arithmetic operators --
 		// -- Unary arithmetic operators --
 
 
-		GLM_FUNC_DECL vec & operator=(vec const& v) GLM_DEFAULT;
+		GLM_FUNC_DECL GLM_CONSTEXPR_CXX14 vec & operator=(vec const& v) GLM_DEFAULT;
 
 
 		template<typename U>
 		template<typename U>
-		GLM_FUNC_DECL vec & operator=(vec<3, U, Q> const& v);
+		GLM_FUNC_DECL GLM_CONSTEXPR_CXX14 vec & operator=(vec<3, U, Q> const& v);
 		template<typename U>
 		template<typename U>
 		GLM_FUNC_DECL vec & operator+=(U scalar);
 		GLM_FUNC_DECL vec & operator+=(U scalar);
 		template<typename U>
 		template<typename U>

+ 2 - 2
glm/detail/type_vec3.inl

@@ -124,7 +124,7 @@ namespace glm
 
 
 #	if !GLM_HAS_DEFAULTED_FUNCTIONS
 #	if !GLM_HAS_DEFAULTED_FUNCTIONS
 		template<typename T, qualifier Q>
 		template<typename T, qualifier Q>
-		GLM_FUNC_QUALIFIER vec<3, T, Q>& vec<3, T, Q>::operator=(vec<3, T, Q> const& v)
+		GLM_FUNC_QUALIFIER GLM_CONSTEXPR_CXX14 vec<3, T, Q>& vec<3, T, Q>::operator=(vec<3, T, Q> const& v)
 		{
 		{
 			this->x = v.x;
 			this->x = v.x;
 			this->y = v.y;
 			this->y = v.y;
@@ -135,7 +135,7 @@ namespace glm
 
 
 	template<typename T, qualifier Q>
 	template<typename T, qualifier Q>
 	template<typename U>
 	template<typename U>
-	GLM_FUNC_QUALIFIER vec<3, T, Q>& vec<3, T, Q>::operator=(vec<3, U, Q> const& v)
+	GLM_FUNC_QUALIFIER GLM_CONSTEXPR_CXX14 vec<3, T, Q>& vec<3, T, Q>::operator=(vec<3, U, Q> const& v)
 	{
 	{
 		this->x = static_cast<T>(v.x);
 		this->x = static_cast<T>(v.x);
 		this->y = static_cast<T>(v.y);
 		this->y = static_cast<T>(v.y);

+ 2 - 2
glm/detail/type_vec4.hpp

@@ -194,10 +194,10 @@ namespace glm
 
 
 		// -- Unary arithmetic operators --
 		// -- Unary arithmetic operators --
 
 
-		GLM_FUNC_DECL vec<4, T, Q>& operator=(vec<4, T, Q> const& v) GLM_DEFAULT;
+		GLM_FUNC_DECL GLM_CONSTEXPR_CXX14 vec<4, T, Q>& operator=(vec<4, T, Q> const& v) GLM_DEFAULT;
 
 
 		template<typename U>
 		template<typename U>
-		GLM_FUNC_DECL vec<4, T, Q>& operator=(vec<4, U, Q> const& v);
+		GLM_FUNC_DECL GLM_CONSTEXPR_CXX14 vec<4, T, Q>& operator=(vec<4, U, Q> const& v);
 		template<typename U>
 		template<typename U>
 		GLM_FUNC_DECL vec<4, T, Q>& operator+=(U scalar);
 		GLM_FUNC_DECL vec<4, T, Q>& operator+=(U scalar);
 		template<typename U>
 		template<typename U>

+ 2 - 2
glm/detail/type_vec4.inl

@@ -339,7 +339,7 @@ namespace detail
 
 
 #	if !GLM_HAS_DEFAULTED_FUNCTIONS
 #	if !GLM_HAS_DEFAULTED_FUNCTIONS
 		template<typename T, qualifier Q>
 		template<typename T, qualifier Q>
-		GLM_FUNC_QUALIFIER vec<4, T, Q>& vec<4, T, Q>::operator=(vec<4, T, Q> const& v)
+		GLM_FUNC_QUALIFIER GLM_CONSTEXPR_CXX14 vec<4, T, Q>& vec<4, T, Q>::operator=(vec<4, T, Q> const& v)
 		{
 		{
 			this->x = v.x;
 			this->x = v.x;
 			this->y = v.y;
 			this->y = v.y;
@@ -351,7 +351,7 @@ namespace detail
 
 
 	template<typename T, qualifier Q>
 	template<typename T, qualifier Q>
 	template<typename U>
 	template<typename U>
-	GLM_FUNC_QUALIFIER vec<4, T, Q>& vec<4, T, Q>::operator=(vec<4, U, Q> const& v)
+	GLM_FUNC_QUALIFIER GLM_CONSTEXPR_CXX14 vec<4, T, Q>& vec<4, T, Q>::operator=(vec<4, U, Q> const& v)
 	{
 	{
 		this->x = static_cast<T>(v.x);
 		this->x = static_cast<T>(v.x);
 		this->y = static_cast<T>(v.y);
 		this->y = static_cast<T>(v.y);

+ 2 - 2
glm/ext/vec1.hpp

@@ -138,10 +138,10 @@ namespace glm
 */
 */
 		// -- Unary arithmetic operators --
 		// -- Unary arithmetic operators --
 
 
-		GLM_FUNC_DECL vec & operator=(vec const& v) GLM_DEFAULT;
+		GLM_FUNC_DECL GLM_CONSTEXPR_CXX14 vec & operator=(vec const& v) GLM_DEFAULT;
 
 
 		template<typename U>
 		template<typename U>
-		GLM_FUNC_DECL vec & operator=(vec<1, U, Q> const& v);
+		GLM_FUNC_DECL GLM_CONSTEXPR_CXX14 vec & operator=(vec<1, U, Q> const& v);
 		template<typename U>
 		template<typename U>
 		GLM_FUNC_DECL vec & operator+=(U scalar);
 		GLM_FUNC_DECL vec & operator+=(U scalar);
 		template<typename U>
 		template<typename U>