Initial work on more constexpr support in GLM

This commit is contained in:
Groove 2018-07-10 22:07:03 +02:00
parent ce644e01bb
commit 50bd4b0711
5 changed files with 9 additions and 2 deletions

View File

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

View File

@ -1021,12 +1021,15 @@ namespace glm
// -- Boolean operators -- // -- Boolean operators --
template<typename T, qualifier Q> 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 return
detail::compute_equal<T>::call(v1.x, v2.x) && detail::compute_equal<T>::call(v1.x, v2.x) &&
detail::compute_equal<T>::call(v1.y, v2.y) && detail::compute_equal<T>::call(v1.y, v2.y) &&
detail::compute_equal<T>::call(v1.z, v2.z); detail::compute_equal<T>::call(v1.z, v2.z);
*/
} }
template<typename T, qualifier Q> template<typename T, qualifier Q>

View File

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

View File

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

View File

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