Dedekind 0.0.0
A structuralist C++23 Module Library
Loading...
Searching...
No Matches
FieldRegistration< T, Zero, One, Add, Mult > Struct Template Reference

A commutative ring in which every non-zero multiplicative element is also invertible. More...

Inheritance diagram for FieldRegistration< T, Zero, One, Add, Mult >:
Collaboration diagram for FieldRegistration< T, Zero, One, Add, Mult >:

Static Public Attributes

template<typename Op>
static constexpr bool is_invertible_v
Static Public Attributes inherited from CommutativeRingRegistration< T, Zero, One, Add, Mult >
template<typename Op>
static constexpr bool is_commutative_v
Static Public Attributes inherited from RingRegistration< T, Zero, One, Add, Mult >
template<typename Op>
static constexpr bool is_invertible_v = std::same_as<Op, Add>
Static Public Attributes inherited from RigRegistration< T, Zero, One, Add, Mult >
template<typename Op>
static constexpr bool is_associative_v
template<typename Op>
static constexpr bool is_commutative_v = std::same_as<Op, Add>
template<typename Op>
static constexpr bool is_periodic_v
template<typename Op>
static constexpr T unit_v = std::same_as<Op, Add> ? T(Zero) : T(One)
template<typename MultOp, typename AddOp>
static constexpr bool is_distributive_v

Additional Inherited Members

Public Types inherited from RigRegistration< T, Zero, One, Add, Mult >
using Domain = T
using dedekind_registration_tag = void

Detailed Description

template<typename T, auto Zero, auto One, typename Add = std::plus<T>, typename Mult = std::multiplies<T>>
struct FieldRegistration< T, Zero, One, Add, Mult >

A commutative ring in which every non-zero multiplicative element is also invertible.

Since concepts cannot quantify over values, the multiplicative-invertibility member template returns true for the declared Mult operation; zero is excluded by convention (same pattern as the rest of the library).

Member Data Documentation

◆ is_invertible_v

template<typename T, auto Zero, auto One, typename Add = std::plus<T>, typename Mult = std::multiplies<T>>
template<typename Op>
bool FieldRegistration< T, Zero, One, Add, Mult >::is_invertible_v
staticconstexpr
Initial value:
=
std::same_as<Op, Add> || std::same_as<Op, Mult>

The documentation for this struct was generated from the following file: