libsemigroups  v3.0.0
C++ library for semigroups and monoids
Loading...
Searching...
No Matches
make<FroidurePin>

This page contains documentation related to safely constructing a FroidurePin instance.

See also
The `make` function for an overview of possible uses of the make function.

Functions

template<template< typename... > typename Thing, typename Container, typename Element = typename Container::value_type>
auto make (Container const &gens) -> std::enable_if_t< std::is_same_v< Thing< Element >, FroidurePin< Element > >, FroidurePin< Element > >
 Construct a FroidurePin iinstance from container of generators.
 
template<template< typename... > typename Thing, typename Iterator1, typename Iterator2, typename Element = std::decay_t<decltype(*std::declval<Iterator1>())>>
auto make (Iterator1 first, Iterator2 last) -> std::enable_if_t< std::is_same_v< Thing< Element >, FroidurePin< Element > >, FroidurePin< Element > >
 Construct a FroidurePin instance from range of elements given by iterators.
 
template<template< typename... > typename Thing, typename Element>
auto make (std::initializer_list< Element > gens) -> std::enable_if_t< std::is_same_v< Thing< Element >, FroidurePin< Element > >, FroidurePin< Element > >
 Construct a FroidurePin instance from std::initializer_list of generators.
 

Function Documentation

◆ make() [1/3]

template<template< typename... > typename Thing, typename Container, typename Element = typename Container::value_type>
auto make ( Container const & gens) -> std::enable_if_t<std::is_same_v<Thing<Element>, FroidurePin<Element>>, FroidurePin<Element>>
nodiscard

This function can be used to construct a FroidurePin instance from a container of generators after first verifying that the proposed generators all have equal degree.

Parameters
gensthe generators.
Exceptions
LibsemigroupsExceptionif Degree()(x) != Degree(y) for any x and y in gens.

◆ make() [2/3]

template<template< typename... > typename Thing, typename Iterator1, typename Iterator2, typename Element = std::decay_t<decltype(*std::declval<Iterator1>())>>
auto make ( Iterator1 first,
Iterator2 last ) -> std::enable_if_t<std::is_same_v<Thing<Element>, FroidurePin<Element>>, FroidurePin<Element>>
nodiscard

This function can be used to construct a FroidurePin instance from a the range of generators given by the iterators first and last, after first verifying that the proposed generators all have equal degree. See add_generator for more details.

Template Parameters
Iterator1the type of the first parameter.
Iterator2the type of the second parameter.
Parameters
firstiterator pointing at the first generator to add.
lastiterator pointing one beyond the last generator to add.
Returns
A newly constructed FroidurePin instance with generators given by first and last.
Exceptions
LibsemigroupsExceptionif Degree()(x) != Degree(y) for any of the proposed generators x and y.

◆ make() [3/3]

template<template< typename... > typename Thing, typename Element>
auto make ( std::initializer_list< Element > gens) -> std::enable_if_t<std::is_same_v<Thing<Element>, FroidurePin<Element>>, FroidurePin<Element>>

This function can be used to construct a FroidurePin instance from a std::initializer_list of generators after first verifying that the proposed generators all have equal degree. See add_generator for more details.

Template Parameters
Elementthe type of the elements in the FroidurePin instance.
Parameters
gensthe std::initializer_list of generators.
Returns
A newly constructed FroidurePin instance with generators equal to gens.
Exceptions
LibsemigroupsExceptionif Degree()(x) != Degree(y) for any x and y in gens.