52 template<
typename T, std::
size_t N>
53 static std::array<T,N> operator+(
const std::array<T,N>& a,
const std::array<T,N>& b)
55 std::array<T,N> result;
56 for (std::size_t dim=0; dim<N; ++dim)
57 result[dim] = a[dim] + b[dim];
61 template<
typename T, std::
size_t N>
62 static std::array<T,N> operator-(
const std::array<T,N>& a,
const std::array<T,N>& b)
64 std::array<T,N> result;
65 for (std::size_t dim=0; dim<N; ++dim)
66 result[dim] = a[dim] - b[dim];
70 template<
typename T, std::
size_t N>
71 static std::array<T,N> operator*(
const std::array<T,N>& a,
const std::array<T,N>& b)
73 std::array<T,N> result;
74 for (std::size_t dim=0; dim<N; ++dim)
75 result[dim] = a[dim] * b[dim];
79 template<
typename T, std::
size_t N>
80 static std::array<T,N> operator/(
const std::array<T,N>& a,
const std::array<T,N>& b)
82 std::array<T,N> result;
83 for (std::size_t dim=0; dim<N; ++dim)
84 result[dim] = a[dim] / b[dim];
88 template<
typename T, std::
size_t N>
89 static std::array<T,N> operator+(
const std::array<T,N>& a, T b)
91 std::array<T,N> result;
92 for (std::size_t dim=0; dim<N; ++dim)
93 result[dim] = a[dim] + b;
97 template<
typename T, std::
size_t N>
98 static std::array<T,N> operator-(
const std::array<T,N>& a, T b)
100 std::array<T,N> result;
101 for (std::size_t dim=0; dim<N; ++dim)
102 result[dim] = a[dim] - b;
106 template<
typename T, std::
size_t N>
107 static std::array<T,N> operator*(
const std::array<T,N>& a, T b)
109 std::array<T,N> result;
110 for (std::size_t dim=0; dim<N; ++dim)
111 result[dim] = a[dim] * b;
115 template<
typename T, std::
size_t N>
116 static std::array<T,N> operator/(
const std::array<T,N>& a, T b)
118 std::array<T,N> result;
119 for (std::size_t dim=0; dim<N; ++dim)
120 result[dim] = a[dim] / b;
127 template<
typename T, std::
size_t N>
128 static std::ostream&
operator<<(std::ostream& os,
const std::array<T,N>& a)
131 for (std::size_t dim=0; dim<N; ++dim)
132 os << a[dim] << (dim==N-1 ?
"" :
", ");