template<typename Element, typename = void>
struct libsemigroups::One< Element, typename >
Specialisations of this struct should be stateless trivially default constructible with:
- A call operator of signature Element operator()(Element const& x)
const (possibly noexcept, inline and/or constexpr also) returning the identity element of type
Element for x.
To use the adapter with SchreierSims it is necessary to implement:
- Element operator()(size_t n) const (possibly noexcept, inline and/or constexpr also) returning a multiplicative identity element
x of type Element and with Degree<Element>()(x) equal to the parameter n. For example, if Element is a type of n x n matrices, then this should return the n x n identity matrix.
- Template Parameters
-
| Element | the type of the elements of a semigroup. |
The second template parameter exists for SFINAE.
- Used by:
-
- Example
template <typename T>
T,
typename
std::enable_if<std::is_base_of<PTransf16, T>::value>::type> {
T operator()(size_t = 0) const noexcept {
return T::one();
}
T operator()(T const&) const noexcept {
return T::one();
}
};
Adapter for the identity element of the given type.
Definition adapters.hpp:251