template <class T> \
VtArray<T> \
{ \
\
if (!lhs.empty() && !rhs.empty() && lhs.size() != rhs.size()) { \
TF_CODING_ERROR("Non-conforming inputs for operator %s", #op); \
} \
\
const bool leftEmpty = lhs.size() == 0, rightEmpty = rhs.size() == 0; \
VtArray<T> ret(leftEmpty ? rhs.size() : lhs.size()); \
T zero = VtZero<T>(); \
if (leftEmpty) { \
std::transform(rhs.begin(), rhs.end(), ret.begin(), \
[zero](T const &r) { return T(zero op r); }); \
} \
else if (rightEmpty) { \
std::transform(lhs.begin(), lhs.end(), ret.begin(), \
[zero](T const &l) { return T(l op zero); }); \
} \
else { \
std::transform(lhs.begin(), lhs.end(), rhs.begin(), ret.begin(), \
[](T const &l, T const &r) { return T(l op r); }); \
} \
return ret; \
}
Represents an arbitrary dimensional rectangular container class.