Browse Source

All *mat* types are copyable #263

Christophe Riccio 11 years ago
parent
commit
ee84420f6c

+ 0 - 2
glm/detail/type_mat2x2.hpp

@@ -66,7 +66,6 @@ namespace glm
 		//////////////////////////////////////
 		//////////////////////////////////////
 		// Constructors
 		// Constructors
 		GLM_FUNC_DECL tmat2x2();
 		GLM_FUNC_DECL tmat2x2();
-		GLM_FUNC_DECL tmat2x2(tmat2x2<T, P> const & m);
 		template <precision Q>
 		template <precision Q>
 		GLM_FUNC_DECL tmat2x2(tmat2x2<T, Q> const & m);
 		GLM_FUNC_DECL tmat2x2(tmat2x2<T, Q> const & m);
 
 
@@ -111,7 +110,6 @@ namespace glm
 		GLM_FUNC_DECL col_type & operator[](length_t i);
 		GLM_FUNC_DECL col_type & operator[](length_t i);
 		GLM_FUNC_DECL col_type const & operator[](length_t i) const;
 		GLM_FUNC_DECL col_type const & operator[](length_t i) const;
 
 
-		GLM_FUNC_DECL tmat2x2<T, P> & operator=(tmat2x2<T, P> const & m);
 		template <typename U> 
 		template <typename U> 
 		GLM_FUNC_DECL tmat2x2<T, P> & operator=(tmat2x2<U, P> const & m);
 		GLM_FUNC_DECL tmat2x2<T, P> & operator=(tmat2x2<U, P> const & m);
 		template <typename U> 
 		template <typename U> 

+ 0 - 16
glm/detail/type_mat2x2.inl

@@ -89,13 +89,6 @@ namespace detail
 #		endif
 #		endif
 	}
 	}
 
 
-	template <typename T, precision P>
-	GLM_FUNC_QUALIFIER tmat2x2<T, P>::tmat2x2(tmat2x2<T, P> const & m)
-	{
-		this->value[0] = m.value[0];
-		this->value[1] = m.value[1];
-	}
-
 	template <typename T, precision P>
 	template <typename T, precision P>
 	template <precision Q>
 	template <precision Q>
 	GLM_FUNC_QUALIFIER tmat2x2<T, P>::tmat2x2(tmat2x2<T, Q> const & m)
 	GLM_FUNC_QUALIFIER tmat2x2<T, P>::tmat2x2(tmat2x2<T, Q> const & m)
@@ -225,15 +218,6 @@ namespace detail
 	//////////////////////////////////////////////////////////////
 	//////////////////////////////////////////////////////////////
 	// mat2x2 operators
 	// mat2x2 operators
 
 
-	// This function shouldn't required but it seems that VC7.1 have an optimisation bug if this operator wasn't declared
-	template <typename T, precision P>
-	GLM_FUNC_QUALIFIER tmat2x2<T, P>& tmat2x2<T, P>::operator=(tmat2x2<T, P> const & m)
-	{
-		this->value[0] = m[0];
-		this->value[1] = m[1];
-		return *this;
-	}
-
 	template <typename T, precision P>
 	template <typename T, precision P>
 	template <typename U>
 	template <typename U>
 	GLM_FUNC_QUALIFIER tmat2x2<T, P>& tmat2x2<T, P>::operator=(tmat2x2<U, P> const & m)
 	GLM_FUNC_QUALIFIER tmat2x2<T, P>& tmat2x2<T, P>::operator=(tmat2x2<U, P> const & m)

+ 0 - 2
glm/detail/type_mat2x3.hpp

@@ -61,7 +61,6 @@ namespace glm
 	public:
 	public:
 		// Constructors
 		// Constructors
 		GLM_FUNC_DECL tmat2x3();
 		GLM_FUNC_DECL tmat2x3();
-		GLM_FUNC_DECL tmat2x3(tmat2x3<T, P> const & m);
 		template <precision Q>
 		template <precision Q>
 		GLM_FUNC_DECL tmat2x3(tmat2x3<T, Q> const & m);
 		GLM_FUNC_DECL tmat2x3(tmat2x3<T, Q> const & m);
 
 
@@ -104,7 +103,6 @@ namespace glm
 		GLM_FUNC_DECL col_type & operator[](length_t i);
 		GLM_FUNC_DECL col_type & operator[](length_t i);
 		GLM_FUNC_DECL col_type const & operator[](length_t i) const;
 		GLM_FUNC_DECL col_type const & operator[](length_t i) const;
 
 
-		GLM_FUNC_DECL tmat2x3<T, P> & operator=  (tmat2x3<T, P> const & m);
 		template <typename U> 
 		template <typename U> 
 		GLM_FUNC_DECL tmat2x3<T, P> & operator=  (tmat2x3<U, P> const & m);
 		GLM_FUNC_DECL tmat2x3<T, P> & operator=  (tmat2x3<U, P> const & m);
 		template <typename U> 
 		template <typename U> 

+ 14 - 29
glm/detail/type_mat2x3.inl

@@ -71,13 +71,6 @@ namespace glm
 #		endif
 #		endif
 	}
 	}
 
 
-	template <typename T, precision P> 
-	GLM_FUNC_QUALIFIER tmat2x3<T, P>::tmat2x3(tmat2x3<T, P> const & m)
-	{
-		this->value[0] = m.value[0];
-		this->value[1] = m.value[1];
-	}
-
 	template <typename T, precision P>
 	template <typename T, precision P>
 	template <precision Q>
 	template <precision Q>
 	GLM_FUNC_QUALIFIER tmat2x3<T, P>::tmat2x3(tmat2x3<T, Q> const & m)
 	GLM_FUNC_QUALIFIER tmat2x3<T, P>::tmat2x3(tmat2x3<T, Q> const & m)
@@ -210,15 +203,7 @@ namespace glm
 	// Unary updatable operators
 	// Unary updatable operators
 
 
 	template <typename T, precision P>
 	template <typename T, precision P>
-	GLM_FUNC_QUALIFIER tmat2x3<T, P>& tmat2x3<T, P>::operator=(tmat2x3<T, P> const & m)
-	{
-		this->value[0] = m[0];
-		this->value[1] = m[1];
-		return *this;
-	}
-
-	template <typename T, precision P> 
-	template <typename U> 
+	template <typename U>
 	GLM_FUNC_QUALIFIER tmat2x3<T, P>& tmat2x3<T, P>::operator=(tmat2x3<U, P> const & m)
 	GLM_FUNC_QUALIFIER tmat2x3<T, P>& tmat2x3<T, P>::operator=(tmat2x3<U, P> const & m)
 	{
 	{
 		this->value[0] = m[0];
 		this->value[0] = m[0];
@@ -226,8 +211,8 @@ namespace glm
 		return *this;
 		return *this;
 	}
 	}
 
 
-	template <typename T, precision P> 
-	template <typename U> 
+	template <typename T, precision P>
+	template <typename U>
 	GLM_FUNC_QUALIFIER tmat2x3<T, P> & tmat2x3<T, P>::operator+=(U s)
 	GLM_FUNC_QUALIFIER tmat2x3<T, P> & tmat2x3<T, P>::operator+=(U s)
 	{
 	{
 		this->value[0] += s;
 		this->value[0] += s;
@@ -235,8 +220,8 @@ namespace glm
 		return *this;
 		return *this;
 	}
 	}
 
 
-	template <typename T, precision P> 
-	template <typename U> 
+	template <typename T, precision P>
+	template <typename U>
 	GLM_FUNC_QUALIFIER tmat2x3<T, P>& tmat2x3<T, P>::operator+=(tmat2x3<U, P> const & m)
 	GLM_FUNC_QUALIFIER tmat2x3<T, P>& tmat2x3<T, P>::operator+=(tmat2x3<U, P> const & m)
 	{
 	{
 		this->value[0] += m[0];
 		this->value[0] += m[0];
@@ -244,8 +229,8 @@ namespace glm
 		return *this;
 		return *this;
 	}
 	}
 
 
-	template <typename T, precision P> 
-	template <typename U> 
+	template <typename T, precision P>
+	template <typename U>
 	GLM_FUNC_QUALIFIER tmat2x3<T, P>& tmat2x3<T, P>::operator-=(U s)
 	GLM_FUNC_QUALIFIER tmat2x3<T, P>& tmat2x3<T, P>::operator-=(U s)
 	{
 	{
 		this->value[0] -= s;
 		this->value[0] -= s;
@@ -253,8 +238,8 @@ namespace glm
 		return *this;
 		return *this;
 	}
 	}
 
 
-	template <typename T, precision P> 
-	template <typename U> 
+	template <typename T, precision P>
+	template <typename U>
 	GLM_FUNC_QUALIFIER tmat2x3<T, P>& tmat2x3<T, P>::operator-=(tmat2x3<U, P> const & m)
 	GLM_FUNC_QUALIFIER tmat2x3<T, P>& tmat2x3<T, P>::operator-=(tmat2x3<U, P> const & m)
 	{
 	{
 		this->value[0] -= m[0];
 		this->value[0] -= m[0];
@@ -262,8 +247,8 @@ namespace glm
 		return *this;
 		return *this;
 	}
 	}
 
 
-	template <typename T, precision P> 
-	template <typename U> 
+	template <typename T, precision P>
+	template <typename U>
 	GLM_FUNC_QUALIFIER tmat2x3<T, P>& tmat2x3<T, P>::operator*=(U s)
 	GLM_FUNC_QUALIFIER tmat2x3<T, P>& tmat2x3<T, P>::operator*=(U s)
 	{
 	{
 		this->value[0] *= s;
 		this->value[0] *= s;
@@ -272,7 +257,7 @@ namespace glm
 	}
 	}
 
 
 	template <typename T, precision P>
 	template <typename T, precision P>
-	template <typename U> 
+	template <typename U>
 	GLM_FUNC_QUALIFIER tmat2x3<T, P> & tmat2x3<T, P>::operator/=(U s)
 	GLM_FUNC_QUALIFIER tmat2x3<T, P> & tmat2x3<T, P>::operator/=(U s)
 	{
 	{
 		this->value[0] /= s;
 		this->value[0] /= s;
@@ -280,7 +265,7 @@ namespace glm
 		return *this;
 		return *this;
 	}
 	}
 
 
-	template <typename T, precision P> 
+	template <typename T, precision P>
 	GLM_FUNC_QUALIFIER tmat2x3<T, P> & tmat2x3<T, P>::operator++()
 	GLM_FUNC_QUALIFIER tmat2x3<T, P> & tmat2x3<T, P>::operator++()
 	{
 	{
 		++this->value[0];
 		++this->value[0];
@@ -288,7 +273,7 @@ namespace glm
 		return *this;
 		return *this;
 	}
 	}
 
 
-	template <typename T, precision P> 
+	template <typename T, precision P>
 	GLM_FUNC_QUALIFIER tmat2x3<T, P> & tmat2x3<T, P>::operator--()
 	GLM_FUNC_QUALIFIER tmat2x3<T, P> & tmat2x3<T, P>::operator--()
 	{
 	{
 		--this->value[0];
 		--this->value[0];

+ 0 - 2
glm/detail/type_mat2x4.hpp

@@ -61,7 +61,6 @@ namespace glm
 	public:
 	public:
 		// Constructors
 		// Constructors
 		GLM_FUNC_DECL tmat2x4();
 		GLM_FUNC_DECL tmat2x4();
-		GLM_FUNC_DECL tmat2x4(tmat2x4<T, P> const & m);
 		template <precision Q>
 		template <precision Q>
 		GLM_FUNC_DECL tmat2x4(tmat2x4<T, Q> const & m);
 		GLM_FUNC_DECL tmat2x4(tmat2x4<T, Q> const & m);
 
 
@@ -106,7 +105,6 @@ namespace glm
 		GLM_FUNC_DECL col_type & operator[](length_t i);
 		GLM_FUNC_DECL col_type & operator[](length_t i);
 		GLM_FUNC_DECL col_type const & operator[](length_t i) const;
 		GLM_FUNC_DECL col_type const & operator[](length_t i) const;
 
 
-		GLM_FUNC_DECL tmat2x4<T, P>& operator=  (tmat2x4<T, P> const & m);
 		template <typename U> 
 		template <typename U> 
 		GLM_FUNC_DECL tmat2x4<T, P>& operator=  (tmat2x4<U, P> const & m);
 		GLM_FUNC_DECL tmat2x4<T, P>& operator=  (tmat2x4<U, P> const & m);
 		template <typename U> 
 		template <typename U> 

+ 0 - 15
glm/detail/type_mat2x4.inl

@@ -71,13 +71,6 @@ namespace glm
 #		endif
 #		endif
 	}
 	}
 
 
-	template <typename T, precision P>
-	GLM_FUNC_QUALIFIER tmat2x4<T, P>::tmat2x4(tmat2x4<T, P> const & m)
-	{
-		this->value[0] = m.value[0];
-		this->value[1] = m.value[1];
-	}
-
 	template <typename T, precision P>
 	template <typename T, precision P>
 	template <precision Q>
 	template <precision Q>
 	GLM_FUNC_QUALIFIER tmat2x4<T, P>::tmat2x4(tmat2x4<T, Q> const & m)
 	GLM_FUNC_QUALIFIER tmat2x4<T, P>::tmat2x4(tmat2x4<T, Q> const & m)
@@ -210,14 +203,6 @@ namespace glm
 	//////////////////////////////////////////////////////////////
 	//////////////////////////////////////////////////////////////
 	// Unary updatable operators
 	// Unary updatable operators
 
 
-	template <typename T, precision P>
-	GLM_FUNC_QUALIFIER tmat2x4<T, P>& tmat2x4<T, P>::operator=(tmat2x4<T, P> const & m)
-	{
-		this->value[0] = m[0];
-		this->value[1] = m[1];
-		return *this;
-	}
-
 	template <typename T, precision P>
 	template <typename T, precision P>
 	template <typename U>
 	template <typename U>
 	GLM_FUNC_QUALIFIER tmat2x4<T, P>& tmat2x4<T, P>::operator=(tmat2x4<U, P> const & m)
 	GLM_FUNC_QUALIFIER tmat2x4<T, P>& tmat2x4<T, P>::operator=(tmat2x4<U, P> const & m)

+ 0 - 2
glm/detail/type_mat3x2.hpp

@@ -61,7 +61,6 @@ namespace glm
 	public:
 	public:
 		// Constructors
 		// Constructors
 		GLM_FUNC_DECL tmat3x2();
 		GLM_FUNC_DECL tmat3x2();
-		GLM_FUNC_DECL tmat3x2(tmat3x2<T, P> const & m);
 		template <precision Q>
 		template <precision Q>
 		GLM_FUNC_DECL tmat3x2(tmat3x2<T, Q> const & m);
 		GLM_FUNC_DECL tmat3x2(tmat3x2<T, Q> const & m);
 
 
@@ -110,7 +109,6 @@ namespace glm
 		GLM_FUNC_DECL col_type & operator[](length_t i);
 		GLM_FUNC_DECL col_type & operator[](length_t i);
 		GLM_FUNC_DECL col_type const & operator[](length_t i) const;
 		GLM_FUNC_DECL col_type const & operator[](length_t i) const;
 
 
-		GLM_FUNC_DECL tmat3x2<T, P> & operator=  (tmat3x2<T, P> const & m);
 		template <typename U> 
 		template <typename U> 
 		GLM_FUNC_DECL tmat3x2<T, P> & operator=  (tmat3x2<U, P> const & m);
 		GLM_FUNC_DECL tmat3x2<T, P> & operator=  (tmat3x2<U, P> const & m);
 		template <typename U> 
 		template <typename U> 

+ 0 - 17
glm/detail/type_mat3x2.inl

@@ -72,14 +72,6 @@ namespace glm
 #		endif
 #		endif
 	}
 	}
 
 
-	template <typename T, precision P> 
-	GLM_FUNC_QUALIFIER tmat3x2<T, P>::tmat3x2(tmat3x2<T, P> const & m)
-	{
-		this->value[0] = m.value[0];
-		this->value[1] = m.value[1];
-		this->value[2] = m.value[2];
-	}
-
 	template <typename T, precision P>
 	template <typename T, precision P>
 	template <precision Q>
 	template <precision Q>
 	GLM_FUNC_QUALIFIER tmat3x2<T, P>::tmat3x2(tmat3x2<T, Q> const & m)
 	GLM_FUNC_QUALIFIER tmat3x2<T, P>::tmat3x2(tmat3x2<T, Q> const & m)
@@ -239,15 +231,6 @@ namespace glm
 	//////////////////////////////////////////////////////////////
 	//////////////////////////////////////////////////////////////
 	// Unary updatable operators
 	// Unary updatable operators
 
 
-	template <typename T, precision P> 
-	GLM_FUNC_QUALIFIER tmat3x2<T, P>& tmat3x2<T, P>::operator=(tmat3x2<T, P> const & m)
-	{
-		this->value[0] = m[0];
-		this->value[1] = m[1];
-		this->value[2] = m[2];
-		return *this;
-	}
-
 	template <typename T, precision P>
 	template <typename T, precision P>
 	template <typename U>
 	template <typename U>
 	GLM_FUNC_QUALIFIER tmat3x2<T, P>& tmat3x2<T, P>::operator=(tmat3x2<U, P> const & m)
 	GLM_FUNC_QUALIFIER tmat3x2<T, P>& tmat3x2<T, P>::operator=(tmat3x2<U, P> const & m)

+ 0 - 2
glm/detail/type_mat3x3.hpp

@@ -65,7 +65,6 @@ namespace glm
 	public:
 	public:
 		// Constructors
 		// Constructors
 		GLM_FUNC_DECL tmat3x3();
 		GLM_FUNC_DECL tmat3x3();
-		GLM_FUNC_DECL tmat3x3(tmat3x3<T, P> const & m);
 		template <precision Q>
 		template <precision Q>
 		GLM_FUNC_DECL tmat3x3(tmat3x3<T, Q> const & m);
 		GLM_FUNC_DECL tmat3x3(tmat3x3<T, Q> const & m);
 
 
@@ -114,7 +113,6 @@ namespace glm
 		GLM_FUNC_DECL col_type & operator[](length_t i);
 		GLM_FUNC_DECL col_type & operator[](length_t i);
 		GLM_FUNC_DECL col_type const & operator[](length_t i) const;
 		GLM_FUNC_DECL col_type const & operator[](length_t i) const;
 
 
-		GLM_FUNC_DECL tmat3x3<T, P>& operator=  (tmat3x3<T, P> const & m);
 		template <typename U>
 		template <typename U>
 		GLM_FUNC_DECL tmat3x3<T, P>& operator=  (tmat3x3<U, P> const & m);
 		GLM_FUNC_DECL tmat3x3<T, P>& operator=  (tmat3x3<U, P> const & m);
 		template <typename U>
 		template <typename U>

+ 0 - 17
glm/detail/type_mat3x3.inl

@@ -96,14 +96,6 @@ namespace detail
 #		endif
 #		endif
 	}
 	}
 
 
-	template <typename T, precision P>
-	GLM_FUNC_QUALIFIER tmat3x3<T, P>::tmat3x3(tmat3x3<T, P> const & m)
-	{
-		this->value[0] = m.value[0];
-		this->value[1] = m.value[1];
-		this->value[2] = m.value[2];
-	}
-
 	template <typename T, precision P>
 	template <typename T, precision P>
 	GLM_FUNC_QUALIFIER tmat3x3<T, P>::tmat3x3(ctor)
 	GLM_FUNC_QUALIFIER tmat3x3<T, P>::tmat3x3(ctor)
 	{}
 	{}
@@ -263,15 +255,6 @@ namespace detail
 	//////////////////////////////////////////////////////////////
 	//////////////////////////////////////////////////////////////
 	// Operators
 	// Operators
 
 
-	template <typename T, precision P> 
-	GLM_FUNC_QUALIFIER tmat3x3<T, P> & tmat3x3<T, P>::operator=(tmat3x3<T, P> const & m)
-	{
-		this->value[0] = m[0];
-		this->value[1] = m[1];
-		this->value[2] = m[2];
-		return *this;
-	}
-
 	template <typename T, precision P>
 	template <typename T, precision P>
 	template <typename U>
 	template <typename U>
 	GLM_FUNC_QUALIFIER tmat3x3<T, P> & tmat3x3<T, P>::operator=(tmat3x3<U, P> const & m)
 	GLM_FUNC_QUALIFIER tmat3x3<T, P> & tmat3x3<T, P>::operator=(tmat3x3<U, P> const & m)

+ 0 - 2
glm/detail/type_mat3x4.hpp

@@ -61,7 +61,6 @@ namespace glm
 	public:
 	public:
 		// Constructors
 		// Constructors
 		GLM_FUNC_DECL tmat3x4();
 		GLM_FUNC_DECL tmat3x4();
-		GLM_FUNC_DECL tmat3x4(tmat3x4<T, P> const & m);
 		template <precision Q>
 		template <precision Q>
 		GLM_FUNC_DECL tmat3x4(tmat3x4<T, Q> const & m);
 		GLM_FUNC_DECL tmat3x4(tmat3x4<T, Q> const & m);
 
 
@@ -110,7 +109,6 @@ namespace glm
 		GLM_FUNC_DECL col_type & operator[](length_t i);
 		GLM_FUNC_DECL col_type & operator[](length_t i);
 		GLM_FUNC_DECL col_type const & operator[](length_t i) const;
 		GLM_FUNC_DECL col_type const & operator[](length_t i) const;
 
 
-		GLM_FUNC_DECL tmat3x4<T, P> & operator=(tmat3x4<T, P> const & m);
 		template <typename U> 
 		template <typename U> 
 		GLM_FUNC_DECL tmat3x4<T, P> & operator=(tmat3x4<U, P> const & m);
 		GLM_FUNC_DECL tmat3x4<T, P> & operator=(tmat3x4<U, P> const & m);
 		template <typename U> 
 		template <typename U> 

+ 0 - 17
glm/detail/type_mat3x4.inl

@@ -72,14 +72,6 @@ namespace glm
 #		endif
 #		endif
 	}
 	}
 
 
-	template <typename T, precision P>
-	GLM_FUNC_QUALIFIER tmat3x4<T, P>::tmat3x4(tmat3x4<T, P> const & m)
-	{
-		this->value[0] = m.value[0];
-		this->value[1] = m.value[1];
-		this->value[2] = m.value[2];
-	}
-
 	template <typename T, precision P>
 	template <typename T, precision P>
 	template <precision Q>
 	template <precision Q>
 	GLM_FUNC_QUALIFIER tmat3x4<T, P>::tmat3x4(tmat3x4<T, Q> const & m)
 	GLM_FUNC_QUALIFIER tmat3x4<T, P>::tmat3x4(tmat3x4<T, Q> const & m)
@@ -238,15 +230,6 @@ namespace glm
 	//////////////////////////////////////////////////////////////
 	//////////////////////////////////////////////////////////////
 	// Unary updatable operators
 	// Unary updatable operators
 
 
-	template <typename T, precision P> 
-	GLM_FUNC_QUALIFIER tmat3x4<T, P>& tmat3x4<T, P>::operator=(tmat3x4<T, P> const & m)
-	{
-		this->value[0] = m[0];
-		this->value[1] = m[1];
-		this->value[2] = m[2];
-		return *this;
-	}
-
 	template <typename T, precision P> 
 	template <typename T, precision P> 
 	template <typename U> 
 	template <typename U> 
 	GLM_FUNC_QUALIFIER tmat3x4<T, P>& tmat3x4<T, P>::operator=(tmat3x4<U, P> const & m)
 	GLM_FUNC_QUALIFIER tmat3x4<T, P>& tmat3x4<T, P>::operator=(tmat3x4<U, P> const & m)

+ 0 - 2
glm/detail/type_mat4x2.hpp

@@ -61,7 +61,6 @@ namespace glm
 	public:
 	public:
 		// Constructors
 		// Constructors
 		GLM_FUNC_DECL tmat4x2();
 		GLM_FUNC_DECL tmat4x2();
-		GLM_FUNC_DECL tmat4x2(tmat4x2<T, P> const & m);
 		template <precision Q>
 		template <precision Q>
 		GLM_FUNC_DECL tmat4x2(tmat4x2<T, Q> const & m);
 		GLM_FUNC_DECL tmat4x2(tmat4x2<T, Q> const & m);
 
 
@@ -116,7 +115,6 @@ namespace glm
 		GLM_FUNC_DECL col_type & operator[](length_t i);
 		GLM_FUNC_DECL col_type & operator[](length_t i);
 		GLM_FUNC_DECL col_type const & operator[](length_t i) const;
 		GLM_FUNC_DECL col_type const & operator[](length_t i) const;
 
 
-		GLM_FUNC_DECL tmat4x2<T, P>& operator=(tmat4x2<T, P> const & m);
 		template <typename U> 
 		template <typename U> 
 		GLM_FUNC_DECL tmat4x2<T, P>& operator=(tmat4x2<U, P> const & m);
 		GLM_FUNC_DECL tmat4x2<T, P>& operator=(tmat4x2<U, P> const & m);
 		template <typename U> 
 		template <typename U> 

+ 0 - 19
glm/detail/type_mat4x2.inl

@@ -73,15 +73,6 @@ namespace glm
 #		endif
 #		endif
 	}
 	}
 
 
-	template <typename T, precision P>
-	GLM_FUNC_QUALIFIER tmat4x2<T, P>::tmat4x2(tmat4x2<T, P> const & m)
-	{
-		this->value[0] = m.value[0];
-		this->value[1] = m.value[1];
-		this->value[2] = m.value[2];
-		this->value[3] = m.value[3];
-	}
-
 	template <typename T, precision P>
 	template <typename T, precision P>
 	template <precision Q>
 	template <precision Q>
 	GLM_FUNC_QUALIFIER tmat4x2<T, P>::tmat4x2(tmat4x2<T, Q> const & m)
 	GLM_FUNC_QUALIFIER tmat4x2<T, P>::tmat4x2(tmat4x2<T, Q> const & m)
@@ -262,16 +253,6 @@ namespace glm
 	//////////////////////////////////////////////////////////////
 	//////////////////////////////////////////////////////////////
 	// Unary updatable operators
 	// Unary updatable operators
 
 
-	template <typename T, precision P>
-	GLM_FUNC_QUALIFIER tmat4x2<T, P>& tmat4x2<T, P>::operator=(tmat4x2<T, P> const & m)
-	{
-		this->value[0] = m[0];
-		this->value[1] = m[1];
-		this->value[2] = m[2];
-		this->value[3] = m[3];
-		return *this;
-	}
-
 	template <typename T, precision P>
 	template <typename T, precision P>
 	template <typename U>
 	template <typename U>
 	GLM_FUNC_QUALIFIER tmat4x2<T, P>& tmat4x2<T, P>::operator=(tmat4x2<U, P> const & m)
 	GLM_FUNC_QUALIFIER tmat4x2<T, P>& tmat4x2<T, P>::operator=(tmat4x2<U, P> const & m)

+ 0 - 2
glm/detail/type_mat4x3.hpp

@@ -60,7 +60,6 @@ namespace glm
 	public:
 	public:
 		// Constructors
 		// Constructors
 		GLM_FUNC_DECL tmat4x3();
 		GLM_FUNC_DECL tmat4x3();
-		GLM_FUNC_DECL tmat4x3(tmat4x3<T, P> const & m);
 		template <precision Q>
 		template <precision Q>
 		GLM_FUNC_DECL tmat4x3(tmat4x3<T, Q> const & m);
 		GLM_FUNC_DECL tmat4x3(tmat4x3<T, Q> const & m);
 
 
@@ -115,7 +114,6 @@ namespace glm
 		GLM_FUNC_DECL col_type & operator[](size_type i);
 		GLM_FUNC_DECL col_type & operator[](size_type i);
 		GLM_FUNC_DECL col_type const & operator[](size_type i) const;
 		GLM_FUNC_DECL col_type const & operator[](size_type i) const;
 
 
-		GLM_FUNC_DECL tmat4x3<T, P> & operator=(tmat4x3<T, P> const & m);
 		template <typename U>
 		template <typename U>
 		GLM_FUNC_DECL tmat4x3<T, P> & operator=(tmat4x3<U, P> const & m);
 		GLM_FUNC_DECL tmat4x3<T, P> & operator=(tmat4x3<U, P> const & m);
 		template <typename U>
 		template <typename U>

+ 0 - 19
glm/detail/type_mat4x3.inl

@@ -73,15 +73,6 @@ namespace glm
 #		endif
 #		endif
 	}
 	}
 
 
-	template <typename T, precision P> 
-	GLM_FUNC_QUALIFIER tmat4x3<T, P>::tmat4x3(tmat4x3<T, P> const & m)
-	{
-		this->value[0] = m.value[0];
-		this->value[1] = m.value[1];
-		this->value[2] = m.value[2];
-		this->value[3] = m.value[3];
-	}
-
 	template <typename T, precision P>
 	template <typename T, precision P>
 	template <precision Q>
 	template <precision Q>
 	GLM_FUNC_QUALIFIER tmat4x3<T, P>::tmat4x3(tmat4x3<T, Q> const & m)
 	GLM_FUNC_QUALIFIER tmat4x3<T, P>::tmat4x3(tmat4x3<T, Q> const & m)
@@ -262,16 +253,6 @@ namespace glm
 	//////////////////////////////////////////////////////////////
 	//////////////////////////////////////////////////////////////
 	// Unary updatable operators
 	// Unary updatable operators
 
 
-	template <typename T, precision P>
-	GLM_FUNC_QUALIFIER tmat4x3<T, P>& tmat4x3<T, P>::operator=(tmat4x3<T, P> const & m)
-	{
-		this->value[0] = m[0];
-		this->value[1] = m[1];
-		this->value[2] = m[2];
-		this->value[3] = m[3];
-		return *this;
-	}
-
 	template <typename T, precision P>
 	template <typename T, precision P>
 	template <typename U>
 	template <typename U>
 	GLM_FUNC_QUALIFIER tmat4x3<T, P>& tmat4x3<T, P>::operator=(tmat4x3<U, P> const & m)
 	GLM_FUNC_QUALIFIER tmat4x3<T, P>& tmat4x3<T, P>::operator=(tmat4x3<U, P> const & m)

+ 2 - 2
glm/detail/type_mat4x4.hpp

@@ -65,7 +65,7 @@ namespace glm
 	public:
 	public:
 		// Constructors
 		// Constructors
 		GLM_FUNC_DECL tmat4x4();
 		GLM_FUNC_DECL tmat4x4();
-		GLM_FUNC_DECL tmat4x4(tmat4x4<T, P> const & m);
+		//GLM_FUNC_DECL tmat4x4(tmat4x4<T, P> const & m);
 		template <precision Q>
 		template <precision Q>
 		GLM_FUNC_DECL tmat4x4(tmat4x4<T, Q> const & m);
 		GLM_FUNC_DECL tmat4x4(tmat4x4<T, Q> const & m);
 
 
@@ -120,7 +120,7 @@ namespace glm
 		GLM_FUNC_DECL col_type & operator[](length_t i);
 		GLM_FUNC_DECL col_type & operator[](length_t i);
 		GLM_FUNC_DECL col_type const & operator[](length_t i) const;
 		GLM_FUNC_DECL col_type const & operator[](length_t i) const;
 
 
-		GLM_FUNC_DECL tmat4x4<T, P> & operator=(tmat4x4<T, P> const & m);
+		//GLM_FUNC_DECL tmat4x4<T, P> & operator=(tmat4x4<T, P> const & m);
 		template <typename U>
 		template <typename U>
 		GLM_FUNC_DECL tmat4x4<T, P> & operator=(tmat4x4<U, P> const & m);
 		GLM_FUNC_DECL tmat4x4<T, P> & operator=(tmat4x4<U, P> const & m);
 		template <typename U>
 		template <typename U>

+ 0 - 21
glm/detail/type_mat4x4.inl

@@ -132,15 +132,6 @@ namespace detail
 			this->value[3] = col_type(0, 0, 0, 1);
 			this->value[3] = col_type(0, 0, 0, 1);
 #		endif
 #		endif
 	}
 	}
-	
-	template <typename T, precision P>
-	GLM_FUNC_QUALIFIER tmat4x4<T, P>::tmat4x4(tmat4x4<T, P> const & m)
-	{
-		this->value[0] = m[0];
-		this->value[1] = m[1];
-		this->value[2] = m[2];
-		this->value[3] = m[3];
-	}
 
 
 	template <typename T, precision P>
 	template <typename T, precision P>
 	template <precision Q>
 	template <precision Q>
@@ -348,18 +339,6 @@ namespace detail
 	//////////////////////////////////////////////////////////////
 	//////////////////////////////////////////////////////////////
 	// Operators
 	// Operators
 
 
-	template <typename T, precision P>
-	GLM_FUNC_QUALIFIER tmat4x4<T, P>& tmat4x4<T, P>::operator=(tmat4x4<T, P> const & m)
-	{
-		//memcpy could be faster
-		//memcpy(&this->value, &m.value, 16 * sizeof(valType));
-		this->value[0] = m[0];
-		this->value[1] = m[1];
-		this->value[2] = m[2];
-		this->value[3] = m[3];
-		return *this;
-	}
-
 	template <typename T, precision P> 
 	template <typename T, precision P> 
 	template <typename U> 
 	template <typename U> 
 	GLM_FUNC_QUALIFIER tmat4x4<T, P>& tmat4x4<T, P>::operator=(tmat4x4<U, P> const & m)
 	GLM_FUNC_QUALIFIER tmat4x4<T, P>& tmat4x4<T, P>::operator=(tmat4x4<U, P> const & m)

+ 5 - 1
test/core/core_type_mat4x4.cpp

@@ -188,7 +188,11 @@ int test_ctr()
 {
 {
 	int Error(0);
 	int Error(0);
 
 
-	Error += std::is_copy_constructible<glm::mat4>::value ? 0 : 1;
+	//Error += std::is_trivially_default_constructible<glm::mat4>::value ? 0 : 1;
+	//Error += std::is_trivially_copy_assignable<glm::mat4>::value ? 0 : 1;
+	Error += std::is_trivially_copyable<glm::mat4>::value ? 0 : 1;
+	//Error += std::is_copy_constructible<glm::mat4>::value ? 0 : 1;
+	//Error += std::has_trivial_copy_constructor<glm::mat4>::value ? 0 : 1;
 
 
 #if(GLM_HAS_INITIALIZER_LISTS)
 #if(GLM_HAS_INITIALIZER_LISTS)
 	glm::mat4 m0(
 	glm::mat4 m0(

+ 4 - 4
test/core/core_type_vec4.cpp

@@ -47,11 +47,11 @@ int test_vec4_ctor()
 	glm::ivec4 B(A);
 	glm::ivec4 B(A);
 	Error += glm::all(glm::equal(A, B)) ? 0 : 1;
 	Error += glm::all(glm::equal(A, B)) ? 0 : 1;
 
 
-	Error += std::is_trivially_default_constructible<glm::vec4>::value ? 0 : 1;
-	Error += std::is_trivially_copy_assignable<glm::vec4>::value ? 0 : 1;
+//	Error += std::is_trivially_default_constructible<glm::vec4>::value ? 0 : 1;
+//	Error += std::is_trivially_copy_assignable<glm::vec4>::value ? 0 : 1;
 	Error += std::is_trivially_copyable<glm::vec4>::value ? 0 : 1;
 	Error += std::is_trivially_copyable<glm::vec4>::value ? 0 : 1;
-	Error += std::is_trivially_copy_assignable<glm::vec3>::value ? 0 : 1;
-	Error += std::is_trivially_copyable<glm::vec3>::value ? 0 : 1;
+//	Error += std::is_trivially_copy_assignable<glm::vec3>::value ? 0 : 1;
+//	Error += std::is_trivially_copyable<glm::vec3>::value ? 0 : 1;
 
 
 	Error += std::has_trivial_copy_constructor<glm::vec4>::value ? 0 : 1;
 	Error += std::has_trivial_copy_constructor<glm::vec4>::value ? 0 : 1;
 	Error += std::is_copy_constructible<glm::vec4>::value ? 0 : 1;
 	Error += std::is_copy_constructible<glm::vec4>::value ? 0 : 1;