template<typename TElementType, typename TSfinae = void>
struct Degree

Adapter for the degree of an element.

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.

Used by:


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.

  • TSfinae – this template parameter can be used for SFINAE.