Degree

using libsemigroups::FroidurePinTraits::Degree = ::libsemigroups::Degree<element_type>

Defined in adapters.hpp.

Specialisations of this struct should be stateless trivially default constructible with a call operator of signature size_t operator()(TElementType const& x) const (possibly noexcept, inline and/or constexpr also).

The return value of the call operator ought to indicate the degree of a TElementType instance which may or may not depend on the parameter x. The degree of a permutation, for instance, would be the the number of points it acts on, the degree of a matrix is its dimension, and so on. This is used, for example, by SchreierSimsTraits in some member functions to determine whether it is known a priori that a permutation does not belong to the object, because it acts on too many points.

The second template parameter exists for SFINAE in overload resolution.

Used by:

Example

template <>
struct Degree<BMat8> {
  constexpr inline size_t operator()(BMat8 const&) const noexcept {
    return 8;
  }
};

Template Parameters

TElementType – the type of the elements of a semigroup.