17 template <
typename Derived,
typename Value>
26 return static_cast<const self_t&
>(*this);
74 return std::numeric_limits<value_t>::max();
86 return std::numeric_limits<value_t>::max();
110 constexpr
static bool 155 conv(std::istream& is,
bool =
true)
const 158 if (is.peek() ==
'o')
167 else if (!(is >> res))
weightset_mixin< detail::r_impl > r
static value_t transpose(const value_t v)
static constexpr bool is_special(value_t)
static constexpr bool is_idempotent()
static bool less(value_t l, value_t r)
Whether l < r.
static value_t conv(b, b::value_t v)
value_t star(const value_t v) const
static int compare(const value_t l, const value_t r)
Three-way comparison between l and r.
auto hash_value(const T &v) -> decltype(std::hash< T >
Following the naming convention of Boost.
ATTRIBUTE_NORETURN void raise_invalid_value(const ValueSet &vs, Args &&... args)
Cannot make a value from this.
static bool is_one(const value_t v)
static std::ostream & print(const value_t v, std::ostream &o=std::cout, format fmt={})
static bool equal(const value_t l, const value_t r)
Whether l == r.
static value_t mul(const value_t l, const value_t r)
ATTRIBUTE_NORETURN void raise_not_starrable(const WeightSet &ws, const typename WeightSet::value_t &w)
This value is not starrable.
static value_t add(const value_t l, const value_t r)
value_t ldivide(const value_t l, const value_t r) const
static constexpr bool show_one()
static constexpr star_status_t star_status()
void require(Bool b, Args &&... args)
If b is not verified, raise an error with args as message.
static constexpr bool is_commutative()
value_t rdivide(const value_t l, const value_t r) const
An input/output format for valuesets.
Provide a variadic mul on top of a binary mul(), and one().
value_t conv(std::istream &is, bool=true) const
static size_t hash(value_t v)
static bool is_zero(const value_t v)
valid iff proper succeeds.