add <<, >> and <<=, >>= operators

This commit is contained in:
BlackMATov
2021-02-27 12:35:56 +07:00
parent 4f09d7859d
commit 017424641f
5 changed files with 230 additions and 0 deletions

View File

@@ -659,6 +659,44 @@ vec<T, Size>& operator^=(vec<T, Size>& xs, T y);
template < typename T, size_t Size >
vec<T, Size>& operator^=(vec<T, Size>& xs, const vec<T, Size>& ys);
// operator<<
template < typename T, size_t Size >
auto operator<<(const vec<T, Size>& xs, T y);
template < typename T, size_t Size >
auto operator<<(T x, const vec<T, Size>& ys);
template < typename T, size_t Size >
auto operator<<(const vec<T, Size>& xs, const vec<T, Size>& ys);
// operator<<=
template < typename T, size_t Size >
vec<T, Size>& operator<<=(vec<T, Size>& xs, T y);
template < typename T, size_t Size >
vec<T, Size>& operator<<=(vec<T, Size>& xs, const vec<T, Size>& ys);
// operator>>
template < typename T, size_t Size >
auto operator>>(const vec<T, Size>& xs, T y);
template < typename T, size_t Size >
auto operator>>(T x, const vec<T, Size>& ys);
template < typename T, size_t Size >
auto operator>>(const vec<T, Size>& xs, const vec<T, Size>& ys);
// operator>>=
template < typename T, size_t Size >
vec<T, Size>& operator>>=(vec<T, Size>& xs, T y);
template < typename T, size_t Size >
vec<T, Size>& operator>>=(vec<T, Size>& xs, const vec<T, Size>& ys);
// operator&&
template < typename T, size_t Size >
@@ -873,6 +911,44 @@ mat<T, Size>& operator^=(mat<T, Size>& xs, T y);
template < typename T, size_t Size >
mat<T, Size>& operator^=(mat<T, Size>& xs, const mat<T, Size>& ys);
// operator<<
template < typename T, size_t Size >
auto operator<<(const mat<T, Size>& xs, T y);
template < typename T, size_t Size >
auto operator<<(T x, const mat<T, Size>& ys);
template < typename T, size_t Size >
auto operator<<(const mat<T, Size>& xs, const mat<T, Size>& ys);
// operator<<=
template < typename T, size_t Size >
mat<T, Size>& operator<<=(mat<T, Size>& xs, T y);
template < typename T, size_t Size >
mat<T, Size>& operator<<=(mat<T, Size>& xs, const mat<T, Size>& ys);
// operator>>
template < typename T, size_t Size >
auto operator>>(const mat<T, Size>& xs, T y);
template < typename T, size_t Size >
auto operator>>(T x, const mat<T, Size>& ys);
template < typename T, size_t Size >
auto operator>>(const mat<T, Size>& xs, const mat<T, Size>& ys);
// operator>>=
template < typename T, size_t Size >
mat<T, Size>& operator>>=(mat<T, Size>& xs, T y);
template < typename T, size_t Size >
mat<T, Size>& operator>>=(mat<T, Size>& xs, const mat<T, Size>& ys);
// operator&&
template < typename T, size_t Size >