template <class T, int N> \
FN_SPECIFIERS MiniVec<bool, N> operator op(const MiniVec<T, N>& a, \
const MiniVec<T, N>& b) { \
MiniVec<bool, N> c; \
for (int i = 0; i < N; ++i) c[i] = a[i] op b[i]; \
return c; \
} \
\
template <class T, int N> \
FN_SPECIFIERS MiniVec<bool, N> operator op(const MiniVec<T, N>& a, T b) { \
MiniVec<T, N> c; \
for (int i = 0; i < N; ++i) c[i] = a[i] op b; \
return c; \
} \
\
template <class T, int N> \
FN_SPECIFIERS MiniVec<T, N> operator op(T a, const MiniVec<T, N>& b) { \
MiniVec<bool, N> c; \
for (int i = 0; i < N; ++i) c[i] = a op b[i]; \
return c; \
}