void operator ()(Left &left, Right &right) const { BOOST_ASSERT(left.size() == right.size()); for(std::size_t i = 0, size = left.size(); i != size; ++i) { if(numeric::greater(right[i], left[i])) { left[i] = right[i]; } } }
result_type operator ()(Left & left, Right & right) const { std::size_t left_size = left.size(); std::size_t right_size = right.size(); result_type result(left_size, right_size); for (std::size_t i = 0; i < left_size; ++i) for (std::size_t j = 0; j < right_size; ++j) result(i,j) = numeric::multiplies(left[i], right[j]); return result; }