Product¶
-
template<typename TElementType, typename TSfinae = void>
struct Product¶ Adapter for the product of two elements.
Defined in
adapters.hpp.Specialisations of this struct should be stateless trivially default constructible with a call operator of signature
void operator()(TElementType& xy, TElementType const& x, TElementType const& y, size_t = 0)(possiblynoexcept,inlineand/orconstexpralso).The call operator should change
xyin-place to be the product ofxandy. The 4th parameter is optional and it can be used as an index for static thread local storage, that might be required for forming the product ofxandy. The purpose of the 1st parameter is to avoid repeated allocations of memory to hold temporary products that are discarded soon after they are created.- Used by:
- Example
template <> struct Product<size_t> { void operator()(size_t& xy, size_t x, size_t y, size_t = 0) const noexcept { xy = x * y; } };
- tparam TElementType
the type of the elements of a semigroup.
- tparam TSfinae
this template parameter can be used for SFINAE.