![]() |
libsemigroups
v3.0.0
C++ library for semigroups and monoids
|
This is a traits class for use with Action, LeftAction, and RightAction.
Element | the type of the elements. |
Point | the type of the points acted on. |
Public Types | |
using | EqualTo = ::libsemigroups::EqualTo<Point> |
Adapter for testing equality. | |
using | Hash = ::libsemigroups::Hash<Point> |
Adapter for hashing. | |
using | One = ::libsemigroups::One<Element> |
Adapter for the identity element of the given type. | |
using | Product = ::libsemigroups::Product<Element> |
Adapter for the product of two elements. | |
using | Swap = ::libsemigroups::Swap<Element> |
Adapter for swapping. | |
using EqualTo = ::libsemigroups::EqualTo<Point> |
Defined in adapters.hpp
.
This type should be a stateless trivially default constructible with a call operator of signature bool operator()(Value const&, Value const&)
(possibly noexcept
, inline
and/or constexpr
also) for use with, for example, std::unordered_map.
Value | the type of objects to compare. |
The second template parameter exists for SFINAE.
using Hash = ::libsemigroups::Hash<Point> |
Defined in adapters.hpp
.
This type should be a stateless trivially default constructible with a call operator of signature size_t operator()(Value const&)
for use with, for example, std::unordered_map.
Value | the type of objects to compare. |
The second template parameter exists for SFINAE.
using One = ::libsemigroups::One<Element> |
Specialisations of this struct should be stateless trivially default constructible with two call operator of signatures:
Element operator()(size_t n) const
(possibly noexcept
, inline
and/or constexpr
also) returning a multiplicative identity element for the category 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.Element operator()(T const&) const
(possibly noexcept
, inline
and/or constexpr
also). This could be implemented as: Element | the type of the elements of a semigroup. |
The second template parameter exists for SFINAE.
using Product = ::libsemigroups::Product<Element> |
Defined in adapters.hpp
.
Specialisations of this struct should be stateless trivially default constructible with a call operator of signature void operator()(Element&, Element const&, Element const&, size_t = 0)
(possibly noexcept
, inline
and/or constexpr
also).
The call operator should change xy
in-place to be the product of x
and y
. 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 of x
and y
. 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.
Element | the type of the elements of a semigroup. |
The second template parameter exists for SFINAE.
using Swap = ::libsemigroups::Swap<Element> |
Defined in adapters.hpp
.
This type should be a stateless trivially default constructible with a call operator of signature void operator()(Value&, Value&)
(possibly noexcept
, inline
and/or constexpr
also) which swaps its arguments.
Value | the type of objects to swap. |
The second template parameter exists for SFINAE.