template<class T, class Abi> \
friend auto operator OP(const Vc::Vector<T, Abi> &l, Proxy&& r) \
-> decltype(l OP std::declval<value_type>()) \
{ \
return l OP value_type(r); \
} \
template<class T, class Abi> \
auto operator OP(const Vc::Vector<T, Abi> &r) && \
-> decltype(std::declval<value_type>() OP r) \
{ \
return value_type(*this) OP r; \
} \
template<class T,
std::
size_t n, class Vec,
std::
size_t m> \
friend auto \
operator OP(const Vc::SimdArray<T, n, Vec, m> &l, Proxy&& r) \
-> decltype(l OP
std::declval<value_type>()) \
{ \
return l OP value_type(r); \
} \
template<class T, std::size_t n, class Vec, std::size_t m> \
auto operator OP(const Vc::SimdArray<T, n, Vec, m> &r) && \
-> decltype(std::declval<value_type>() OP r) \
{ \
return value_type(*this) OP r; \
}