I suppose some compilers didn't like that...

This commit is contained in:
Adrian Stephens 2017-06-30 21:02:37 -07:00
parent 3cde6862e5
commit 4340ed9ffb
9 changed files with 82 additions and 81 deletions

View File

@ -128,19 +128,19 @@ namespace glm
template<typename U> template<typename U>
GLM_FUNC_DECL vec & operator=(vec<1, U, P> const& v); GLM_FUNC_DECL vec & operator=(vec<1, U, P> const& v);
template<typename U> template<typename U>
GLM_FUNC_DECL GLM_ONLY_SCALAR2(vec, 1, T, P, U) operator+=(U scalar); GLM_FUNC_DECL_ONLY_SCALAR(U) operator+=(U scalar);
template<typename U> template<typename U>
GLM_FUNC_DECL vec & operator+=(vec<1, U, P> const& v); GLM_FUNC_DECL vec & operator+=(vec<1, U, P> const& v);
template<typename U> template<typename U>
GLM_FUNC_DECL GLM_ONLY_SCALAR2(vec, 1, T, P, U) operator-=(U scalar); GLM_FUNC_DECL_ONLY_SCALAR(U) operator-=(U scalar);
template<typename U> template<typename U>
GLM_FUNC_DECL vec & operator-=(vec<1, U, P> const& v); GLM_FUNC_DECL vec & operator-=(vec<1, U, P> const& v);
template<typename U> template<typename U>
GLM_FUNC_DECL GLM_ONLY_SCALAR2(vec, 1, T, P, U) operator*=(U scalar); GLM_FUNC_DECL_ONLY_SCALAR(U) operator*=(U scalar);
template<typename U> template<typename U>
GLM_FUNC_DECL vec & operator*=(vec<1, U, P> const& v); GLM_FUNC_DECL vec & operator*=(vec<1, U, P> const& v);
template<typename U> template<typename U>
GLM_FUNC_DECL GLM_ONLY_SCALAR2(vec, 1, T, P, U) operator/=(U scalar); GLM_FUNC_DECL_ONLY_SCALAR(U) operator/=(U scalar);
template<typename U> template<typename U>
GLM_FUNC_DECL vec & operator/=(vec<1, U, P> const& v); GLM_FUNC_DECL vec & operator/=(vec<1, U, P> const& v);
@ -154,27 +154,27 @@ namespace glm
// -- Unary bit operators -- // -- Unary bit operators --
template<typename U> template<typename U>
GLM_FUNC_DECL GLM_ONLY_SCALAR2(vec, 1, T, P, U) operator%=(U scalar); GLM_FUNC_DECL_ONLY_SCALAR(U) operator%=(U scalar);
template<typename U> template<typename U>
GLM_FUNC_DECL vec & operator%=(vec<1, U, P> const& v); GLM_FUNC_DECL vec & operator%=(vec<1, U, P> const& v);
template<typename U> template<typename U>
GLM_FUNC_DECL GLM_ONLY_SCALAR2(vec, 1, T, P, U) operator&=(U scalar); GLM_FUNC_DECL_ONLY_SCALAR(U) operator&=(U scalar);
template<typename U> template<typename U>
GLM_FUNC_DECL vec & operator&=(vec<1, U, P> const& v); GLM_FUNC_DECL vec & operator&=(vec<1, U, P> const& v);
template<typename U> template<typename U>
GLM_FUNC_DECL GLM_ONLY_SCALAR2(vec, 1, T, P, U) operator|=(U scalar); GLM_FUNC_DECL_ONLY_SCALAR(U) operator|=(U scalar);
template<typename U> template<typename U>
GLM_FUNC_DECL vec & operator|=(vec<1, U, P> const& v); GLM_FUNC_DECL vec & operator|=(vec<1, U, P> const& v);
template<typename U> template<typename U>
GLM_FUNC_DECL GLM_ONLY_SCALAR2(vec, 1, T, P, U) operator^=(U scalar); GLM_FUNC_DECL_ONLY_SCALAR(U) operator^=(U scalar);
template<typename U> template<typename U>
GLM_FUNC_DECL vec & operator^=(vec<1, U, P> const& v); GLM_FUNC_DECL vec & operator^=(vec<1, U, P> const& v);
template<typename U> template<typename U>
GLM_FUNC_DECL GLM_ONLY_SCALAR2(vec, 1, T, P, U) operator<<=(U scalar); GLM_FUNC_DECL_ONLY_SCALAR(U) operator<<=(U scalar);
template<typename U> template<typename U>
GLM_FUNC_DECL vec & operator<<=(vec<1, U, P> const& v); GLM_FUNC_DECL vec & operator<<=(vec<1, U, P> const& v);
template<typename U> template<typename U>
GLM_FUNC_DECL GLM_ONLY_SCALAR2(vec, 1, T, P, U) operator>>=(U scalar); GLM_FUNC_DECL_ONLY_SCALAR(U) operator>>=(U scalar);
template<typename U> template<typename U>
GLM_FUNC_DECL vec & operator>>=(vec<1, U, P> const& v); GLM_FUNC_DECL vec & operator>>=(vec<1, U, P> const& v);
}; };

View File

@ -101,7 +101,7 @@ namespace glm
template<typename T, precision P> template<typename T, precision P>
template<typename U> template<typename U>
GLM_FUNC_QUALIFIER GLM_ONLY_SCALAR2(vec, 1, T, P, U) vec<1, T, P>::operator+=(U scalar) GLM_FUNC_QUALIFIER GLM_ONLY_SCALAR_VEC(vec, 1, T, P, U) vec<1, T, P>::operator+=(U scalar)
{ {
this->x += static_cast<T>(scalar); this->x += static_cast<T>(scalar);
return *this; return *this;
@ -117,7 +117,7 @@ namespace glm
template<typename T, precision P> template<typename T, precision P>
template<typename U> template<typename U>
GLM_FUNC_QUALIFIER GLM_ONLY_SCALAR2(vec, 1, T, P, U) vec<1, T, P>::operator-=(U scalar) GLM_FUNC_QUALIFIER GLM_ONLY_SCALAR_VEC(vec, 1, T, P, U) vec<1, T, P>::operator-=(U scalar)
{ {
this->x -= static_cast<T>(scalar); this->x -= static_cast<T>(scalar);
return *this; return *this;
@ -133,7 +133,7 @@ namespace glm
template<typename T, precision P> template<typename T, precision P>
template<typename U> template<typename U>
GLM_FUNC_QUALIFIER GLM_ONLY_SCALAR2(vec, 1, T, P, U) vec<1, T, P>::operator*=(U scalar) GLM_FUNC_QUALIFIER GLM_ONLY_SCALAR_VEC(vec, 1, T, P, U) vec<1, T, P>::operator*=(U scalar)
{ {
this->x *= static_cast<T>(scalar); this->x *= static_cast<T>(scalar);
return *this; return *this;
@ -149,7 +149,7 @@ namespace glm
template<typename T, precision P> template<typename T, precision P>
template<typename U> template<typename U>
GLM_FUNC_QUALIFIER GLM_ONLY_SCALAR2(vec, 1, T, P, U) vec<1, T, P>::operator/=(U scalar) GLM_FUNC_QUALIFIER GLM_ONLY_SCALAR_VEC(vec, 1, T, P, U) vec<1, T, P>::operator/=(U scalar)
{ {
this->x /= static_cast<T>(scalar); this->x /= static_cast<T>(scalar);
return *this; return *this;
@ -199,7 +199,7 @@ namespace glm
template<typename T, precision P> template<typename T, precision P>
template<typename U> template<typename U>
GLM_FUNC_QUALIFIER GLM_ONLY_SCALAR2(vec, 1, T, P, U) vec<1, T, P>::operator%=(U scalar) GLM_FUNC_QUALIFIER GLM_ONLY_SCALAR_VEC(vec, 1, T, P, U) vec<1, T, P>::operator%=(U scalar)
{ {
this->x %= static_cast<T>(scalar); this->x %= static_cast<T>(scalar);
return *this; return *this;
@ -215,7 +215,7 @@ namespace glm
template<typename T, precision P> template<typename T, precision P>
template<typename U> template<typename U>
GLM_FUNC_QUALIFIER GLM_ONLY_SCALAR2(vec, 1, T, P, U) vec<1, T, P>::operator&=(U scalar) GLM_FUNC_QUALIFIER GLM_ONLY_SCALAR_VEC(vec, 1, T, P, U) vec<1, T, P>::operator&=(U scalar)
{ {
this->x &= static_cast<T>(scalar); this->x &= static_cast<T>(scalar);
return *this; return *this;
@ -231,7 +231,7 @@ namespace glm
template<typename T, precision P> template<typename T, precision P>
template<typename U> template<typename U>
GLM_FUNC_QUALIFIER GLM_ONLY_SCALAR2(vec, 1, T, P, U) vec<1, T, P>::operator|=(U scalar) GLM_FUNC_QUALIFIER GLM_ONLY_SCALAR_VEC(vec, 1, T, P, U) vec<1, T, P>::operator|=(U scalar)
{ {
this->x |= static_cast<T>(scalar); this->x |= static_cast<T>(scalar);
return *this; return *this;
@ -247,7 +247,7 @@ namespace glm
template<typename T, precision P> template<typename T, precision P>
template<typename U> template<typename U>
GLM_FUNC_QUALIFIER GLM_ONLY_SCALAR2(vec, 1, T, P, U) vec<1, T, P>::operator^=(U scalar) GLM_FUNC_QUALIFIER GLM_ONLY_SCALAR_VEC(vec, 1, T, P, U) vec<1, T, P>::operator^=(U scalar)
{ {
this->x ^= static_cast<T>(scalar); this->x ^= static_cast<T>(scalar);
return *this; return *this;
@ -263,7 +263,7 @@ namespace glm
template<typename T, precision P> template<typename T, precision P>
template<typename U> template<typename U>
GLM_FUNC_QUALIFIER GLM_ONLY_SCALAR2(vec, 1, T, P, U) vec<1, T, P>::operator<<=(U scalar) GLM_FUNC_QUALIFIER GLM_ONLY_SCALAR_VEC(vec, 1, T, P, U) vec<1, T, P>::operator<<=(U scalar)
{ {
this->x <<= static_cast<T>(scalar); this->x <<= static_cast<T>(scalar);
return *this; return *this;
@ -279,7 +279,7 @@ namespace glm
template<typename T, precision P> template<typename T, precision P>
template<typename U> template<typename U>
GLM_FUNC_QUALIFIER GLM_ONLY_SCALAR2(vec, 1, T, P, U) vec<1, T, P>::operator>>=(U scalar) GLM_FUNC_QUALIFIER GLM_ONLY_SCALAR_VEC(vec, 1, T, P, U) vec<1, T, P>::operator>>=(U scalar)
{ {
this->x >>= static_cast<T>(scalar); this->x >>= static_cast<T>(scalar);
return *this; return *this;

View File

@ -134,25 +134,25 @@ namespace glm
template<typename U> template<typename U>
GLM_FUNC_DECL vec& operator=(vec<2, U, P> const& v); GLM_FUNC_DECL vec& operator=(vec<2, U, P> const& v);
template<typename U> template<typename U>
GLM_FUNC_DECL GLM_ONLY_SCALAR2(vec, 2, T, P, U) operator+=(U scalar); GLM_FUNC_DECL_ONLY_SCALAR(U) operator+=(U scalar);
template<typename U> template<typename U>
GLM_FUNC_DECL vec& operator+=(vec<1, U, P> const& v); GLM_FUNC_DECL vec& operator+=(vec<1, U, P> const& v);
template<typename U> template<typename U>
GLM_FUNC_DECL vec& operator+=(vec<2, U, P> const& v); GLM_FUNC_DECL vec& operator+=(vec<2, U, P> const& v);
template<typename U> template<typename U>
GLM_FUNC_DECL GLM_ONLY_SCALAR2(vec, 2, T, P, U) operator-=(U scalar); GLM_FUNC_DECL_ONLY_SCALAR(U) operator-=(U scalar);
template<typename U> template<typename U>
GLM_FUNC_DECL vec& operator-=(vec<1, U, P> const& v); GLM_FUNC_DECL vec& operator-=(vec<1, U, P> const& v);
template<typename U> template<typename U>
GLM_FUNC_DECL vec& operator-=(vec<2, U, P> const& v); GLM_FUNC_DECL vec& operator-=(vec<2, U, P> const& v);
template<typename U> template<typename U>
GLM_FUNC_DECL GLM_ONLY_SCALAR2(vec, 2, T, P, U) operator*=(U scalar); GLM_FUNC_DECL_ONLY_SCALAR(U) operator*=(U scalar);
template<typename U> template<typename U>
GLM_FUNC_DECL vec& operator*=(vec<1, U, P> const& v); GLM_FUNC_DECL vec& operator*=(vec<1, U, P> const& v);
template<typename U> template<typename U>
GLM_FUNC_DECL vec& operator*=(vec<2, U, P> const& v); GLM_FUNC_DECL vec& operator*=(vec<2, U, P> const& v);
template<typename U> template<typename U>
GLM_FUNC_DECL GLM_ONLY_SCALAR2(vec, 2, T, P, U) operator/=(U scalar); GLM_FUNC_DECL_ONLY_SCALAR(U) operator/=(U scalar);
template<typename U> template<typename U>
GLM_FUNC_DECL vec& operator/=(vec<1, U, P> const& v); GLM_FUNC_DECL vec& operator/=(vec<1, U, P> const& v);
template<typename U> template<typename U>
@ -168,37 +168,37 @@ namespace glm
// -- Unary bit operators -- // -- Unary bit operators --
template<typename U> template<typename U>
GLM_FUNC_DECL GLM_ONLY_SCALAR2(vec, 2, T, P, U) operator%=(U scalar); GLM_FUNC_DECL_ONLY_SCALAR(U) operator%=(U scalar);
template<typename U> template<typename U>
GLM_FUNC_DECL vec & operator%=(vec<1, U, P> const & v); GLM_FUNC_DECL vec & operator%=(vec<1, U, P> const & v);
template<typename U> template<typename U>
GLM_FUNC_DECL vec & operator%=(vec<2, U, P> const & v); GLM_FUNC_DECL vec & operator%=(vec<2, U, P> const & v);
template<typename U> template<typename U>
GLM_FUNC_DECL GLM_ONLY_SCALAR2(vec, 2, T, P, U) operator&=(U scalar); GLM_FUNC_DECL_ONLY_SCALAR(U) operator&=(U scalar);
template<typename U> template<typename U>
GLM_FUNC_DECL vec & operator&=(vec<1, U, P> const & v); GLM_FUNC_DECL vec & operator&=(vec<1, U, P> const & v);
template<typename U> template<typename U>
GLM_FUNC_DECL vec & operator&=(vec<2, U, P> const & v); GLM_FUNC_DECL vec & operator&=(vec<2, U, P> const & v);
template<typename U> template<typename U>
GLM_FUNC_DECL GLM_ONLY_SCALAR2(vec, 2, T, P, U) operator|=(U scalar); GLM_FUNC_DECL_ONLY_SCALAR(U) operator|=(U scalar);
template<typename U> template<typename U>
GLM_FUNC_DECL vec & operator|=(vec<1, U, P> const & v); GLM_FUNC_DECL vec & operator|=(vec<1, U, P> const & v);
template<typename U> template<typename U>
GLM_FUNC_DECL vec & operator|=(vec<2, U, P> const & v); GLM_FUNC_DECL vec & operator|=(vec<2, U, P> const & v);
template<typename U> template<typename U>
GLM_FUNC_DECL GLM_ONLY_SCALAR2(vec, 2, T, P, U) operator^=(U scalar); GLM_FUNC_DECL_ONLY_SCALAR(U) operator^=(U scalar);
template<typename U> template<typename U>
GLM_FUNC_DECL vec & operator^=(vec<1, U, P> const & v); GLM_FUNC_DECL vec & operator^=(vec<1, U, P> const & v);
template<typename U> template<typename U>
GLM_FUNC_DECL vec & operator^=(vec<2, U, P> const & v); GLM_FUNC_DECL vec & operator^=(vec<2, U, P> const & v);
template<typename U> template<typename U>
GLM_FUNC_DECL GLM_ONLY_SCALAR2(vec, 2, T, P, U) operator<<=(U scalar); GLM_FUNC_DECL_ONLY_SCALAR(U) operator<<=(U scalar);
template<typename U> template<typename U>
GLM_FUNC_DECL vec & operator<<=(vec<1, U, P> const & v); GLM_FUNC_DECL vec & operator<<=(vec<1, U, P> const & v);
template<typename U> template<typename U>
GLM_FUNC_DECL vec & operator<<=(vec<2, U, P> const & v); GLM_FUNC_DECL vec & operator<<=(vec<2, U, P> const & v);
template<typename U> template<typename U>
GLM_FUNC_DECL GLM_ONLY_SCALAR2(vec, 2, T, P, U) operator>>=(U scalar); GLM_FUNC_DECL_ONLY_SCALAR(U) operator>>=(U scalar);
template<typename U> template<typename U>
GLM_FUNC_DECL vec & operator>>=(vec<1, U, P> const & v); GLM_FUNC_DECL vec & operator>>=(vec<1, U, P> const & v);
template<typename U> template<typename U>

View File

@ -121,7 +121,7 @@ namespace glm
template<typename T, precision P> template<typename T, precision P>
template<typename U> template<typename U>
GLM_FUNC_QUALIFIER GLM_ONLY_SCALAR2(vec, 2, T, P, U) vec<2, T, P>::operator+=(U scalar) GLM_FUNC_QUALIFIER GLM_ONLY_SCALAR_VEC(vec, 2, T, P, U) vec<2, T, P>::operator+=(U scalar)
{ {
this->x += static_cast<T>(scalar); this->x += static_cast<T>(scalar);
this->y += static_cast<T>(scalar); this->y += static_cast<T>(scalar);
@ -148,7 +148,7 @@ namespace glm
template<typename T, precision P> template<typename T, precision P>
template<typename U> template<typename U>
GLM_FUNC_QUALIFIER GLM_ONLY_SCALAR2(vec, 2, T, P, U) vec<2, T, P>::operator-=(U scalar) GLM_FUNC_QUALIFIER GLM_ONLY_SCALAR_VEC(vec, 2, T, P, U) vec<2, T, P>::operator-=(U scalar)
{ {
this->x -= static_cast<T>(scalar); this->x -= static_cast<T>(scalar);
this->y -= static_cast<T>(scalar); this->y -= static_cast<T>(scalar);
@ -175,7 +175,7 @@ namespace glm
template<typename T, precision P> template<typename T, precision P>
template<typename U> template<typename U>
GLM_FUNC_QUALIFIER GLM_ONLY_SCALAR2(vec, 2, T, P, U) vec<2, T, P>::operator*=(U scalar) GLM_FUNC_QUALIFIER GLM_ONLY_SCALAR_VEC(vec, 2, T, P, U) vec<2, T, P>::operator*=(U scalar)
{ {
this->x *= static_cast<T>(scalar); this->x *= static_cast<T>(scalar);
this->y *= static_cast<T>(scalar); this->y *= static_cast<T>(scalar);
@ -202,7 +202,7 @@ namespace glm
template<typename T, precision P> template<typename T, precision P>
template<typename U> template<typename U>
GLM_FUNC_QUALIFIER GLM_ONLY_SCALAR2(vec, 2, T, P, U) vec<2, T, P>::operator/=(U scalar) GLM_FUNC_QUALIFIER GLM_ONLY_SCALAR_VEC(vec, 2, T, P, U) vec<2, T, P>::operator/=(U scalar)
{ {
this->x /= static_cast<T>(scalar); this->x /= static_cast<T>(scalar);
this->y /= static_cast<T>(scalar); this->y /= static_cast<T>(scalar);
@ -265,7 +265,7 @@ namespace glm
template<typename T, precision P> template<typename T, precision P>
template<typename U> template<typename U>
GLM_FUNC_QUALIFIER GLM_ONLY_SCALAR2(vec, 2, T, P, U) vec<2, T, P>::operator%=(U scalar) GLM_FUNC_QUALIFIER GLM_ONLY_SCALAR_VEC(vec, 2, T, P, U) vec<2, T, P>::operator%=(U scalar)
{ {
this->x %= static_cast<T>(scalar); this->x %= static_cast<T>(scalar);
this->y %= static_cast<T>(scalar); this->y %= static_cast<T>(scalar);
@ -292,7 +292,7 @@ namespace glm
template<typename T, precision P> template<typename T, precision P>
template<typename U> template<typename U>
GLM_FUNC_QUALIFIER GLM_ONLY_SCALAR2(vec, 2, T, P, U) vec<2, T, P>::operator&=(U scalar) GLM_FUNC_QUALIFIER GLM_ONLY_SCALAR_VEC(vec, 2, T, P, U) vec<2, T, P>::operator&=(U scalar)
{ {
this->x &= static_cast<T>(scalar); this->x &= static_cast<T>(scalar);
this->y &= static_cast<T>(scalar); this->y &= static_cast<T>(scalar);
@ -319,7 +319,7 @@ namespace glm
template<typename T, precision P> template<typename T, precision P>
template<typename U> template<typename U>
GLM_FUNC_QUALIFIER GLM_ONLY_SCALAR2(vec, 2, T, P, U) vec<2, T, P>::operator|=(U scalar) GLM_FUNC_QUALIFIER GLM_ONLY_SCALAR_VEC(vec, 2, T, P, U) vec<2, T, P>::operator|=(U scalar)
{ {
this->x |= static_cast<T>(scalar); this->x |= static_cast<T>(scalar);
this->y |= static_cast<T>(scalar); this->y |= static_cast<T>(scalar);
@ -346,7 +346,7 @@ namespace glm
template<typename T, precision P> template<typename T, precision P>
template<typename U> template<typename U>
GLM_FUNC_QUALIFIER GLM_ONLY_SCALAR2(vec, 2, T, P, U) vec<2, T, P>::operator^=(U scalar) GLM_FUNC_QUALIFIER GLM_ONLY_SCALAR_VEC(vec, 2, T, P, U) vec<2, T, P>::operator^=(U scalar)
{ {
this->x ^= static_cast<T>(scalar); this->x ^= static_cast<T>(scalar);
this->y ^= static_cast<T>(scalar); this->y ^= static_cast<T>(scalar);
@ -373,7 +373,7 @@ namespace glm
template<typename T, precision P> template<typename T, precision P>
template<typename U> template<typename U>
GLM_FUNC_QUALIFIER GLM_ONLY_SCALAR2(vec, 2, T, P, U) vec<2, T, P>::operator<<=(U scalar) GLM_FUNC_QUALIFIER GLM_ONLY_SCALAR_VEC(vec, 2, T, P, U) vec<2, T, P>::operator<<=(U scalar)
{ {
this->x <<= static_cast<T>(scalar); this->x <<= static_cast<T>(scalar);
this->y <<= static_cast<T>(scalar); this->y <<= static_cast<T>(scalar);
@ -400,7 +400,7 @@ namespace glm
template<typename T, precision P> template<typename T, precision P>
template<typename U> template<typename U>
GLM_FUNC_QUALIFIER GLM_ONLY_SCALAR2(vec, 2, T, P, U) vec<2, T, P>::operator>>=(U scalar) GLM_FUNC_QUALIFIER GLM_ONLY_SCALAR_VEC(vec, 2, T, P, U) vec<2, T, P>::operator>>=(U scalar)
{ {
this->x >>= static_cast<T>(scalar); this->x >>= static_cast<T>(scalar);
this->y >>= static_cast<T>(scalar); this->y >>= static_cast<T>(scalar);

View File

@ -155,25 +155,25 @@ namespace glm
template<typename U> template<typename U>
GLM_FUNC_DECL vec & operator=(vec<3, U, P> const & v); GLM_FUNC_DECL vec & operator=(vec<3, U, P> const & v);
template<typename U> template<typename U>
GLM_FUNC_DECL GLM_ONLY_SCALAR2(vec, 3, T, P, U) operator+=(U scalar); GLM_FUNC_DECL_ONLY_SCALAR(U) operator+=(U scalar);
template<typename U> template<typename U>
GLM_FUNC_DECL vec & operator+=(vec<1, U, P> const & v); GLM_FUNC_DECL vec & operator+=(vec<1, U, P> const & v);
template<typename U> template<typename U>
GLM_FUNC_DECL vec & operator+=(vec<3, U, P> const & v); GLM_FUNC_DECL vec & operator+=(vec<3, U, P> const & v);
template<typename U> template<typename U>
GLM_FUNC_DECL GLM_ONLY_SCALAR2(vec, 3, T, P, U) operator-=(U scalar); GLM_FUNC_DECL_ONLY_SCALAR(U) operator-=(U scalar);
template<typename U> template<typename U>
GLM_FUNC_DECL vec & operator-=(vec<1, U, P> const & v); GLM_FUNC_DECL vec & operator-=(vec<1, U, P> const & v);
template<typename U> template<typename U>
GLM_FUNC_DECL vec & operator-=(vec<3, U, P> const & v); GLM_FUNC_DECL vec & operator-=(vec<3, U, P> const & v);
template<typename U> template<typename U>
GLM_FUNC_DECL GLM_ONLY_SCALAR2(vec, 3, T, P, U) operator*=(U scalar); GLM_FUNC_DECL_ONLY_SCALAR(U) operator*=(U scalar);
template<typename U> template<typename U>
GLM_FUNC_DECL vec & operator*=(vec<1, U, P> const & v); GLM_FUNC_DECL vec & operator*=(vec<1, U, P> const & v);
template<typename U> template<typename U>
GLM_FUNC_DECL vec & operator*=(vec<3, U, P> const & v); GLM_FUNC_DECL vec & operator*=(vec<3, U, P> const & v);
template<typename U> template<typename U>
GLM_FUNC_DECL GLM_ONLY_SCALAR2(vec, 3, T, P, U) operator/=(U scalar); GLM_FUNC_DECL_ONLY_SCALAR(U) operator/=(U scalar);
template<typename U> template<typename U>
GLM_FUNC_DECL vec & operator/=(vec<1, U, P> const & v); GLM_FUNC_DECL vec & operator/=(vec<1, U, P> const & v);
template<typename U> template<typename U>
@ -189,37 +189,37 @@ namespace glm
// -- Unary bit operators -- // -- Unary bit operators --
template<typename U> template<typename U>
GLM_FUNC_DECL GLM_ONLY_SCALAR2(vec, 3, T, P, U) operator%=(U scalar); GLM_FUNC_DECL_ONLY_SCALAR(U) operator%=(U scalar);
template<typename U> template<typename U>
GLM_FUNC_DECL vec & operator%=(vec<1, U, P> const & v); GLM_FUNC_DECL vec & operator%=(vec<1, U, P> const & v);
template<typename U> template<typename U>
GLM_FUNC_DECL vec & operator%=(vec<3, U, P> const & v); GLM_FUNC_DECL vec & operator%=(vec<3, U, P> const & v);
template<typename U> template<typename U>
GLM_FUNC_DECL GLM_ONLY_SCALAR2(vec, 3, T, P, U) operator&=(U scalar); GLM_FUNC_DECL_ONLY_SCALAR(U) operator&=(U scalar);
template<typename U> template<typename U>
GLM_FUNC_DECL vec & operator&=(vec<1, U, P> const & v); GLM_FUNC_DECL vec & operator&=(vec<1, U, P> const & v);
template<typename U> template<typename U>
GLM_FUNC_DECL vec & operator&=(vec<3, U, P> const & v); GLM_FUNC_DECL vec & operator&=(vec<3, U, P> const & v);
template<typename U> template<typename U>
GLM_FUNC_DECL GLM_ONLY_SCALAR2(vec, 3, T, P, U) operator|=(U scalar); GLM_FUNC_DECL_ONLY_SCALAR(U) operator|=(U scalar);
template<typename U> template<typename U>
GLM_FUNC_DECL vec & operator|=(vec<1, U, P> const & v); GLM_FUNC_DECL vec & operator|=(vec<1, U, P> const & v);
template<typename U> template<typename U>
GLM_FUNC_DECL vec & operator|=(vec<3, U, P> const & v); GLM_FUNC_DECL vec & operator|=(vec<3, U, P> const & v);
template<typename U> template<typename U>
GLM_FUNC_DECL GLM_ONLY_SCALAR2(vec, 3, T, P, U) operator^=(U scalar); GLM_FUNC_DECL_ONLY_SCALAR(U) operator^=(U scalar);
template<typename U> template<typename U>
GLM_FUNC_DECL vec & operator^=(vec<1, U, P> const & v); GLM_FUNC_DECL vec & operator^=(vec<1, U, P> const & v);
template<typename U> template<typename U>
GLM_FUNC_DECL vec & operator^=(vec<3, U, P> const & v); GLM_FUNC_DECL vec & operator^=(vec<3, U, P> const & v);
template<typename U> template<typename U>
GLM_FUNC_DECL GLM_ONLY_SCALAR2(vec, 3, T, P, U) operator<<=(U scalar); GLM_FUNC_DECL_ONLY_SCALAR(U) operator<<=(U scalar);
template<typename U> template<typename U>
GLM_FUNC_DECL vec & operator<<=(vec<1, U, P> const & v); GLM_FUNC_DECL vec & operator<<=(vec<1, U, P> const & v);
template<typename U> template<typename U>
GLM_FUNC_DECL vec & operator<<=(vec<3, U, P> const & v); GLM_FUNC_DECL vec & operator<<=(vec<3, U, P> const & v);
template<typename U> template<typename U>
GLM_FUNC_DECL GLM_ONLY_SCALAR2(vec, 3, T, P, U) operator>>=(U scalar); GLM_FUNC_DECL_ONLY_SCALAR(U) operator>>=(U scalar);
template<typename U> template<typename U>
GLM_FUNC_DECL vec & operator>>=(vec<1, U, P> const & v); GLM_FUNC_DECL vec & operator>>=(vec<1, U, P> const & v);
template<typename U> template<typename U>

View File

@ -152,7 +152,7 @@ namespace glm
template<typename T, precision P> template<typename T, precision P>
template<typename U> template<typename U>
GLM_FUNC_QUALIFIER GLM_ONLY_SCALAR2(vec, 3, T, P, U) vec<3, T, P>::operator+=(U scalar) GLM_FUNC_QUALIFIER GLM_ONLY_SCALAR_VEC(vec, 3, T, P, U) vec<3, T, P>::operator+=(U scalar)
{ {
this->x += static_cast<T>(scalar); this->x += static_cast<T>(scalar);
this->y += static_cast<T>(scalar); this->y += static_cast<T>(scalar);
@ -182,7 +182,7 @@ namespace glm
template<typename T, precision P> template<typename T, precision P>
template<typename U> template<typename U>
GLM_FUNC_QUALIFIER GLM_ONLY_SCALAR2(vec, 3, T, P, U) vec<3, T, P>::operator-=(U scalar) GLM_FUNC_QUALIFIER GLM_ONLY_SCALAR_VEC(vec, 3, T, P, U) vec<3, T, P>::operator-=(U scalar)
{ {
this->x -= static_cast<T>(scalar); this->x -= static_cast<T>(scalar);
this->y -= static_cast<T>(scalar); this->y -= static_cast<T>(scalar);
@ -212,7 +212,7 @@ namespace glm
template<typename T, precision P> template<typename T, precision P>
template<typename U> template<typename U>
GLM_FUNC_QUALIFIER GLM_ONLY_SCALAR2(vec, 3, T, P, U) vec<3, T, P>::operator*=(U scalar) GLM_FUNC_QUALIFIER GLM_ONLY_SCALAR_VEC(vec, 3, T, P, U) vec<3, T, P>::operator*=(U scalar)
{ {
this->x *= static_cast<T>(scalar); this->x *= static_cast<T>(scalar);
this->y *= static_cast<T>(scalar); this->y *= static_cast<T>(scalar);
@ -242,7 +242,7 @@ namespace glm
template<typename T, precision P> template<typename T, precision P>
template<typename U> template<typename U>
GLM_FUNC_DECL GLM_ONLY_SCALAR2(vec, 3, T, P, U) vec<3, T, P>::operator/=(U v) GLM_FUNC_QUALIFIER GLM_ONLY_SCALAR_VEC(vec, 3, T, P, U) vec<3, T, P>::operator/=(U v)
{ {
this->x /= static_cast<T>(v); this->x /= static_cast<T>(v);
this->y /= static_cast<T>(v); this->y /= static_cast<T>(v);
@ -310,7 +310,7 @@ namespace glm
template<typename T, precision P> template<typename T, precision P>
template<typename U> template<typename U>
GLM_FUNC_QUALIFIER GLM_ONLY_SCALAR2(vec, 3, T, P, U) vec<3, T, P>::operator%=(U scalar) GLM_FUNC_QUALIFIER GLM_ONLY_SCALAR_VEC(vec, 3, T, P, U) vec<3, T, P>::operator%=(U scalar)
{ {
this->x %= scalar; this->x %= scalar;
this->y %= scalar; this->y %= scalar;
@ -340,7 +340,7 @@ namespace glm
template<typename T, precision P> template<typename T, precision P>
template<typename U> template<typename U>
GLM_FUNC_QUALIFIER GLM_ONLY_SCALAR2(vec, 3, T, P, U) vec<3, T, P>::operator&=(U scalar) GLM_FUNC_QUALIFIER GLM_ONLY_SCALAR_VEC(vec, 3, T, P, U) vec<3, T, P>::operator&=(U scalar)
{ {
this->x &= scalar; this->x &= scalar;
this->y &= scalar; this->y &= scalar;
@ -370,7 +370,7 @@ namespace glm
template<typename T, precision P> template<typename T, precision P>
template<typename U> template<typename U>
GLM_FUNC_QUALIFIER GLM_ONLY_SCALAR2(vec, 3, T, P, U) vec<3, T, P>::operator|=(U scalar) GLM_FUNC_QUALIFIER GLM_ONLY_SCALAR_VEC(vec, 3, T, P, U) vec<3, T, P>::operator|=(U scalar)
{ {
this->x |= scalar; this->x |= scalar;
this->y |= scalar; this->y |= scalar;
@ -400,7 +400,7 @@ namespace glm
template<typename T, precision P> template<typename T, precision P>
template<typename U> template<typename U>
GLM_FUNC_QUALIFIER GLM_ONLY_SCALAR2(vec, 3, T, P, U) vec<3, T, P>::operator^=(U scalar) GLM_FUNC_QUALIFIER GLM_ONLY_SCALAR_VEC(vec, 3, T, P, U) vec<3, T, P>::operator^=(U scalar)
{ {
this->x ^= scalar; this->x ^= scalar;
this->y ^= scalar; this->y ^= scalar;
@ -430,7 +430,7 @@ namespace glm
template<typename T, precision P> template<typename T, precision P>
template<typename U> template<typename U>
GLM_FUNC_QUALIFIER GLM_ONLY_SCALAR2(vec, 3, T, P, U) vec<3, T, P>::operator<<=(U scalar) GLM_FUNC_QUALIFIER GLM_ONLY_SCALAR_VEC(vec, 3, T, P, U) vec<3, T, P>::operator<<=(U scalar)
{ {
this->x <<= scalar; this->x <<= scalar;
this->y <<= scalar; this->y <<= scalar;
@ -460,7 +460,7 @@ namespace glm
template<typename T, precision P> template<typename T, precision P>
template<typename U> template<typename U>
GLM_FUNC_QUALIFIER GLM_ONLY_SCALAR2(vec, 3, T, P, U) vec<3, T, P>::operator>>=(U scalar) GLM_FUNC_QUALIFIER GLM_ONLY_SCALAR_VEC(vec, 3, T, P, U) vec<3, T, P>::operator>>=(U scalar)
{ {
this->x >>= static_cast<T>(scalar); this->x >>= static_cast<T>(scalar);
this->y >>= static_cast<T>(scalar); this->y >>= static_cast<T>(scalar);

View File

@ -200,25 +200,25 @@ namespace glm
template<typename U> template<typename U>
GLM_FUNC_DECL vec<4, T, P>& operator=(vec<4, U, P> const & v); GLM_FUNC_DECL vec<4, T, P>& operator=(vec<4, U, P> const & v);
template<typename U> template<typename U>
GLM_FUNC_DECL GLM_ONLY_SCALAR2(vec, 4, T, P, U) operator+=(U scalar); GLM_FUNC_DECL_ONLY_SCALAR(U) operator+=(U scalar);
template<typename U> template<typename U>
GLM_FUNC_DECL vec<4, T, P>& operator+=(vec<1, U, P> const & v); GLM_FUNC_DECL vec<4, T, P>& operator+=(vec<1, U, P> const & v);
template<typename U> template<typename U>
GLM_FUNC_DECL vec<4, T, P>& operator+=(vec<4, U, P> const & v); GLM_FUNC_DECL vec<4, T, P>& operator+=(vec<4, U, P> const & v);
template<typename U> template<typename U>
GLM_FUNC_DECL GLM_ONLY_SCALAR2(vec, 4, T, P, U) operator-=(U scalar); GLM_FUNC_DECL_ONLY_SCALAR(U) operator-=(U scalar);
template<typename U> template<typename U>
GLM_FUNC_DECL vec<4, T, P>& operator-=(vec<1, U, P> const & v); GLM_FUNC_DECL vec<4, T, P>& operator-=(vec<1, U, P> const & v);
template<typename U> template<typename U>
GLM_FUNC_DECL vec<4, T, P>& operator-=(vec<4, U, P> const & v); GLM_FUNC_DECL vec<4, T, P>& operator-=(vec<4, U, P> const & v);
template<typename U> template<typename U>
GLM_FUNC_DECL GLM_ONLY_SCALAR2(vec, 4, T, P, U) operator*=(U scalar); GLM_FUNC_DECL_ONLY_SCALAR(U) operator*=(U scalar);
template<typename U> template<typename U>
GLM_FUNC_DECL vec<4, T, P>& operator*=(vec<1, U, P> const& v); GLM_FUNC_DECL vec<4, T, P>& operator*=(vec<1, U, P> const& v);
template<typename U> template<typename U>
GLM_FUNC_DECL vec<4, T, P>& operator*=(vec<4, U, P> const& v); GLM_FUNC_DECL vec<4, T, P>& operator*=(vec<4, U, P> const& v);
template<typename U> template<typename U>
GLM_FUNC_DECL GLM_ONLY_SCALAR2(vec, 4, T, P, U) operator/=(U scalar); GLM_FUNC_DECL_ONLY_SCALAR(U) operator/=(U scalar);
template<typename U> template<typename U>
GLM_FUNC_DECL vec<4, T, P>& operator/=(vec<1, U, P> const & v); GLM_FUNC_DECL vec<4, T, P>& operator/=(vec<1, U, P> const & v);
template<typename U> template<typename U>
@ -234,37 +234,37 @@ namespace glm
// -- Unary bit operators -- // -- Unary bit operators --
template<typename U> template<typename U>
GLM_FUNC_DECL GLM_ONLY_SCALAR2(vec, 4, T, P, U) operator%=(U scalar); GLM_FUNC_DECL_ONLY_SCALAR(U) operator%=(U scalar);
template<typename U> template<typename U>
GLM_FUNC_DECL vec<4, T, P> & operator%=(vec<1, U, P> const & v); GLM_FUNC_DECL vec<4, T, P> & operator%=(vec<1, U, P> const & v);
template<typename U> template<typename U>
GLM_FUNC_DECL vec<4, T, P> & operator%=(vec<4, U, P> const & v); GLM_FUNC_DECL vec<4, T, P> & operator%=(vec<4, U, P> const & v);
template<typename U> template<typename U>
GLM_FUNC_DECL GLM_ONLY_SCALAR2(vec, 4, T, P, U) operator&=(U scalar); GLM_FUNC_DECL_ONLY_SCALAR(U) operator&=(U scalar);
template<typename U> template<typename U>
GLM_FUNC_DECL vec<4, T, P> & operator&=(vec<1, U, P> const & v); GLM_FUNC_DECL vec<4, T, P> & operator&=(vec<1, U, P> const & v);
template<typename U> template<typename U>
GLM_FUNC_DECL vec<4, T, P> & operator&=(vec<4, U, P> const & v); GLM_FUNC_DECL vec<4, T, P> & operator&=(vec<4, U, P> const & v);
template<typename U> template<typename U>
GLM_FUNC_DECL GLM_ONLY_SCALAR2(vec, 4, T, P, U) operator|=(U scalar); GLM_FUNC_DECL_ONLY_SCALAR(U) operator|=(U scalar);
template<typename U> template<typename U>
GLM_FUNC_DECL vec<4, T, P> & operator|=(vec<1, U, P> const & v); GLM_FUNC_DECL vec<4, T, P> & operator|=(vec<1, U, P> const & v);
template<typename U> template<typename U>
GLM_FUNC_DECL vec<4, T, P> & operator|=(vec<4, U, P> const & v); GLM_FUNC_DECL vec<4, T, P> & operator|=(vec<4, U, P> const & v);
template<typename U> template<typename U>
GLM_FUNC_DECL GLM_ONLY_SCALAR2(vec, 4, T, P, U) operator^=(U scalar); GLM_FUNC_DECL_ONLY_SCALAR(U) operator^=(U scalar);
template<typename U> template<typename U>
GLM_FUNC_DECL vec<4, T, P> & operator^=(vec<1, U, P> const & v); GLM_FUNC_DECL vec<4, T, P> & operator^=(vec<1, U, P> const & v);
template<typename U> template<typename U>
GLM_FUNC_DECL vec<4, T, P> & operator^=(vec<4, U, P> const & v); GLM_FUNC_DECL vec<4, T, P> & operator^=(vec<4, U, P> const & v);
template<typename U> template<typename U>
GLM_FUNC_DECL GLM_ONLY_SCALAR2(vec, 4, T, P, U) operator<<=(U scalar); GLM_FUNC_DECL_ONLY_SCALAR(U) operator<<=(U scalar);
template<typename U> template<typename U>
GLM_FUNC_DECL vec<4, T, P> & operator<<=(vec<1, U, P> const & v); GLM_FUNC_DECL vec<4, T, P> & operator<<=(vec<1, U, P> const & v);
template<typename U> template<typename U>
GLM_FUNC_DECL vec<4, T, P> & operator<<=(vec<4, U, P> const & v); GLM_FUNC_DECL vec<4, T, P> & operator<<=(vec<4, U, P> const & v);
template<typename U> template<typename U>
GLM_FUNC_DECL GLM_ONLY_SCALAR2(vec, 4, T, P, U) operator>>=(U scalar); GLM_FUNC_DECL_ONLY_SCALAR(U) operator>>=(U scalar);
template<typename U> template<typename U>
GLM_FUNC_DECL vec<4, T, P> & operator>>=(vec<1, U, P> const & v); GLM_FUNC_DECL vec<4, T, P> & operator>>=(vec<1, U, P> const & v);
template<typename U> template<typename U>

View File

@ -365,7 +365,7 @@ namespace detail
template<typename T, precision P> template<typename T, precision P>
template<typename U> template<typename U>
GLM_FUNC_QUALIFIER GLM_ONLY_SCALAR2(vec, 4, T, P, U) vec<4, T, P>::operator+=(U scalar) GLM_FUNC_QUALIFIER GLM_ONLY_SCALAR_VEC(vec, 4, T, P, U) vec<4, T, P>::operator+=(U scalar)
{ {
return (*this = detail::compute_vec4_add<T, P, detail::is_aligned<P>::value>::call(*this, vec<4, T, P>(scalar))); return (*this = detail::compute_vec4_add<T, P, detail::is_aligned<P>::value>::call(*this, vec<4, T, P>(scalar)));
} }
@ -386,7 +386,7 @@ namespace detail
template<typename T, precision P> template<typename T, precision P>
template<typename U> template<typename U>
GLM_FUNC_QUALIFIER GLM_ONLY_SCALAR2(vec, 4, T, P, U) vec<4, T, P>::operator-=(U scalar) GLM_FUNC_QUALIFIER GLM_ONLY_SCALAR_VEC(vec, 4, T, P, U) vec<4, T, P>::operator-=(U scalar)
{ {
return (*this = detail::compute_vec4_sub<T, P, detail::is_aligned<P>::value>::call(*this, vec<4, T, P>(scalar))); return (*this = detail::compute_vec4_sub<T, P, detail::is_aligned<P>::value>::call(*this, vec<4, T, P>(scalar)));
} }
@ -407,7 +407,7 @@ namespace detail
template<typename T, precision P> template<typename T, precision P>
template<typename U> template<typename U>
GLM_FUNC_QUALIFIER GLM_ONLY_SCALAR2(vec, 4, T, P, U) vec<4, T, P>::operator*=(U scalar) GLM_FUNC_QUALIFIER GLM_ONLY_SCALAR_VEC(vec, 4, T, P, U) vec<4, T, P>::operator*=(U scalar)
{ {
return (*this = detail::compute_vec4_mul<T, P, detail::is_aligned<P>::value>::call(*this, vec<4, T, P>(scalar))); return (*this = detail::compute_vec4_mul<T, P, detail::is_aligned<P>::value>::call(*this, vec<4, T, P>(scalar)));
} }
@ -428,7 +428,7 @@ namespace detail
template<typename T, precision P> template<typename T, precision P>
template<typename U> template<typename U>
GLM_FUNC_QUALIFIER GLM_ONLY_SCALAR2(vec, 4, T, P, U) vec<4, T, P>::operator/=(U scalar) GLM_FUNC_QUALIFIER GLM_ONLY_SCALAR_VEC(vec, 4, T, P, U) vec<4, T, P>::operator/=(U scalar)
{ {
return (*this = detail::compute_vec4_div<T, P, detail::is_aligned<P>::value>::call(*this, vec<4, T, P>(scalar))); return (*this = detail::compute_vec4_div<T, P, detail::is_aligned<P>::value>::call(*this, vec<4, T, P>(scalar)));
} }
@ -489,7 +489,7 @@ namespace detail
template<typename T, precision P> template<typename T, precision P>
template<typename U> template<typename U>
GLM_FUNC_QUALIFIER GLM_ONLY_SCALAR2(vec, 4, T, P, U) vec<4, T, P>::operator%=(U scalar) GLM_FUNC_QUALIFIER GLM_ONLY_SCALAR_VEC(vec, 4, T, P, U) vec<4, T, P>::operator%=(U scalar)
{ {
return (*this = detail::compute_vec4_mod<T, P, detail::is_aligned<P>::value>::call(*this, vec<4, T, P>(scalar))); return (*this = detail::compute_vec4_mod<T, P, detail::is_aligned<P>::value>::call(*this, vec<4, T, P>(scalar)));
} }
@ -510,7 +510,7 @@ namespace detail
template<typename T, precision P> template<typename T, precision P>
template<typename U> template<typename U>
GLM_FUNC_QUALIFIER GLM_ONLY_SCALAR2(vec, 4, T, P, U) vec<4, T, P>::operator&=(U scalar) GLM_FUNC_QUALIFIER GLM_ONLY_SCALAR_VEC(vec, 4, T, P, U) vec<4, T, P>::operator&=(U scalar)
{ {
return (*this = detail::compute_vec4_and<T, P, detail::is_int<T>::value, sizeof(T) * 8, detail::is_aligned<P>::value>::call(*this, vec<4, T, P>(scalar))); return (*this = detail::compute_vec4_and<T, P, detail::is_int<T>::value, sizeof(T) * 8, detail::is_aligned<P>::value>::call(*this, vec<4, T, P>(scalar)));
} }
@ -531,7 +531,7 @@ namespace detail
template<typename T, precision P> template<typename T, precision P>
template<typename U> template<typename U>
GLM_FUNC_QUALIFIER GLM_ONLY_SCALAR2(vec, 4, T, P, U) vec<4, T, P>::operator|=(U scalar) GLM_FUNC_QUALIFIER GLM_ONLY_SCALAR_VEC(vec, 4, T, P, U) vec<4, T, P>::operator|=(U scalar)
{ {
return (*this = detail::compute_vec4_or<T, P, detail::is_int<T>::value, sizeof(T) * 8, detail::is_aligned<P>::value>::call(*this, vec<4, T, P>(scalar))); return (*this = detail::compute_vec4_or<T, P, detail::is_int<T>::value, sizeof(T) * 8, detail::is_aligned<P>::value>::call(*this, vec<4, T, P>(scalar)));
} }
@ -552,7 +552,7 @@ namespace detail
template<typename T, precision P> template<typename T, precision P>
template<typename U> template<typename U>
GLM_FUNC_QUALIFIER GLM_ONLY_SCALAR2(vec, 4, T, P, U) vec<4, T, P>::operator^=(U scalar) GLM_FUNC_QUALIFIER GLM_ONLY_SCALAR_VEC(vec, 4, T, P, U) vec<4, T, P>::operator^=(U scalar)
{ {
return (*this = detail::compute_vec4_xor<T, P, detail::is_int<T>::value, sizeof(T) * 8, detail::is_aligned<P>::value>::call(*this, vec<4, T, P>(scalar))); return (*this = detail::compute_vec4_xor<T, P, detail::is_int<T>::value, sizeof(T) * 8, detail::is_aligned<P>::value>::call(*this, vec<4, T, P>(scalar)));
} }
@ -573,7 +573,7 @@ namespace detail
template<typename T, precision P> template<typename T, precision P>
template<typename U> template<typename U>
GLM_FUNC_QUALIFIER GLM_ONLY_SCALAR2(vec, 4, T, P, U) vec<4, T, P>::operator<<=(U scalar) GLM_FUNC_QUALIFIER GLM_ONLY_SCALAR_VEC(vec, 4, T, P, U) vec<4, T, P>::operator<<=(U scalar)
{ {
return (*this = detail::compute_vec4_shift_left<T, P, detail::is_int<T>::value, sizeof(T) * 8, detail::is_aligned<P>::value>::call(*this, vec<4, T, P>(scalar))); return (*this = detail::compute_vec4_shift_left<T, P, detail::is_int<T>::value, sizeof(T) * 8, detail::is_aligned<P>::value>::call(*this, vec<4, T, P>(scalar)));
} }
@ -594,7 +594,7 @@ namespace detail
template<typename T, precision P> template<typename T, precision P>
template<typename U> template<typename U>
GLM_FUNC_QUALIFIER GLM_ONLY_SCALAR2(vec, 4, T, P, U) vec<4, T, P>::operator>>=(U scalar) GLM_FUNC_QUALIFIER GLM_ONLY_SCALAR_VEC(vec, 4, T, P, U) vec<4, T, P>::operator>>=(U scalar)
{ {
return (*this = detail::compute_vec4_shift_right<T, P, detail::is_int<T>::value, sizeof(T) * 8, detail::is_aligned<P>::value>::call(*this, vec<4, T, P>(scalar))); return (*this = detail::compute_vec4_shift_right<T, P, detail::is_int<T>::value, sizeof(T) * 8, detail::is_aligned<P>::value>::call(*this, vec<4, T, P>(scalar)));
} }

View File

@ -19,7 +19,8 @@ namespace glm
template<bool B, typename T> struct meta_if { typedef T type; }; template<bool B, typename T> struct meta_if { typedef T type; };
template<typename T> struct meta_if<false, T> {}; template<typename T> struct meta_if<false, T> {};
#define GLM_ONLY_SCALAR(T) typename meta_if<!is_vec<T>::value, T>::type #define GLM_ONLY_SCALAR(T) typename meta_if<!is_vec<T>::value, T>::type
#define GLM_ONLY_SCALAR2(V,L,T,P,U) typename meta_if<!is_vec<U>::value, V<L,T,P> >::type & #define GLM_ONLY_SCALAR_VEC(V,L,T,P,U) typename meta_if<!is_vec<U>::value, V<L,T,P> >::type &
#define GLM_FUNC_DECL_ONLY_SCALAR(U) GLM_FUNC_DECL typename meta_if<!is_vec<U>::value, vec>::type &
}//namespace glm }//namespace glm
////////////////////// //////////////////////