Browse Source

Initial work on more constexpr support in GLM

Groove 7 years ago
parent
commit
50bd4b0711

+ 1 - 1
glm/detail/type_vec3.hpp

@@ -406,7 +406,7 @@ namespace glm
 	// -- Boolean operators --
 
 	template<typename T, qualifier Q>
-	GLM_FUNC_DECL bool operator==(vec<3, T, Q> const& v1, vec<3, T, Q> const& v2);
+	GLM_FUNC_DECL GLM_CONSTEXPR_CXX11 bool operator==(vec<3, T, Q> const& v1, vec<3, T, Q> const& v2);
 
 	template<typename T, qualifier Q>
 	GLM_FUNC_DECL bool operator!=(vec<3, T, Q> const& v1, vec<3, T, Q> const& v2);

+ 4 - 1
glm/detail/type_vec3.inl

@@ -1021,12 +1021,15 @@ namespace glm
 	// -- Boolean operators --
 
 	template<typename T, qualifier Q>
-	GLM_FUNC_QUALIFIER bool operator==(vec<3, T, Q> const& v1, vec<3, T, Q> const& v2)
+	GLM_FUNC_QUALIFIER GLM_CONSTEXPR_CXX11 bool operator==(vec<3, T, Q> const& v1, vec<3, T, Q> const& v2)
 	{
+		return v1.x == v2.x && v1.y == v2.y && v1.z == v2.z;
+/*
 		return
 			detail::compute_equal<T>::call(v1.x, v2.x) &&
 			detail::compute_equal<T>::call(v1.y, v2.y) &&
 			detail::compute_equal<T>::call(v1.z, v2.z);
+*/
 	}
 
 	template<typename T, qualifier Q>

+ 2 - 0
test/core/core_type_mat4x4.cpp

@@ -321,6 +321,8 @@ static int test_size()
 
 static int test_constexpr()
 {
+	glm::mat4 const I(1.0f);
+
 #if GLM_HAS_CONSTEXPR_CXX11
 	static_assert(glm::mat4::length() == 4, "GLM: Failed constexpr");
 #endif

+ 1 - 0
test/core/core_type_vec3.cpp

@@ -563,6 +563,7 @@ static int test_constexpr()
 #if GLM_HAS_CONSTEXPR_CXX11
 	static_assert(glm::vec3::length() == 3, "GLM: Failed constexpr");
 	static_assert(glm::vec3(1.0f).x > 0.0f, "GLM: Failed constexpr");
+	static_assert(glm::vec3(1.0f) == glm::vec3(1.0f), "GLM: Failed constexpr");
 	static_assert(glm::vec3(1.0f, -1.0f, -1.0f).x > 0.0f, "GLM: Failed constexpr");
 	static_assert(glm::vec3(1.0f, -1.0f, -1.0f).y < 0.0f, "GLM: Failed constexpr");
 #endif

+ 1 - 0
test/core/core_type_vec4.cpp

@@ -714,6 +714,7 @@ static int test_constexpr()
 #if GLM_HAS_CONSTEXPR_CXX11
 	static_assert(glm::vec4::length() == 4, "GLM: Failed constexpr");
 	static_assert(glm::vec4(1.0f).x > 0.0f, "GLM: Failed constexpr");
+	//static_assert(glm::vec4(1.0f) == glm::vec4(1.0f), "GLM: Failed constexpr");
 	static_assert(glm::vec4(1.0f, -1.0f, -1.0f, -1.0f).x > 0.0f, "GLM: Failed constexpr");
 	static_assert(glm::vec4(1.0f, -1.0f, -1.0f, -1.0f).y < 0.0f, "GLM: Failed constexpr");
 #endif