MySQL 9.6.0
Source Code Documentation
mysql::sets::Ordered_set_traits_interface< Self_tp, Element_tp, Difference_tp > Struct Template Reference

Helper CRTP base class to define Ordered Set traits classes, which are optionally Bounded and/or Metric (cf Is_bounded_set_traits/Is_metric_set_traits). More...

#include <ordered_set_traits_interface.h>

Inheritance diagram for mysql::sets::Ordered_set_traits_interface< Self_tp, Element_tp, Difference_tp >:
[legend]

Public Types

using Element_t = Element_tp
 
using Difference_t = Difference_tp
 
using Less_t = detail::Less< Self_tp, Element_tp >
 

Static Public Member Functions

static constexpr bool in_range (const Element_t &element)
 
static constexpr std::strong_ordering cmp (const Element_t &left, const Element_t &right)
 
static constexpr bool lt (const Element_t &left, const Element_t &right)
 
static constexpr bool le (const Element_t &left, const Element_t &right)
 
static constexpr bool gt (const Element_t &left, const Element_t &right)
 
static constexpr bool ge (const Element_t &left, const Element_t &right)
 
static constexpr Difference_t sub (const Element_t &left, const Element_t &right)
 
static constexpr Difference_t add (const Difference_proxy_t &left, const Difference_proxy_t &right)
 
static constexpr Element_t add (const Element_t &left, const Difference_proxy_t &right)
 
static constexpr Element_t add (const Difference_proxy_t &left, const Element_t &right)
 

Private Types

using Self_t = Self_tp
 
using This_t = Ordered_set_traits_interface< Self_t, Element_tp, Difference_tp >
 
using Difference_proxy_t = std::conditional_t< std::same_as< Difference_tp, void >, int, Difference_tp >
 

Detailed Description

template<class Self_tp, class Element_tp, class Difference_tp = void>
struct mysql::sets::Ordered_set_traits_interface< Self_tp, Element_tp, Difference_tp >

Helper CRTP base class to define Ordered Set traits classes, which are optionally Bounded and/or Metric (cf Is_bounded_set_traits/Is_metric_set_traits).

The subclass is required to define the static member function lt, and this class provides the static member functions gt, le, ge, and the member type Less_t, defined in terms of lt.

If the user defines min and max_exclusive, this provides in_range, making the class satisfy Is_bounded_set_traits.

If the template parameter Difference_tp is given, this class also provides add and sub, defined in terms of + and -, making the class satisfy Is_metric_set_traits.

Template Parameters
Self_tpThe subclass that defines lt.
Element_tpThe element type.
Difference_tpThe difference type. This may be omitted, in which case this becomes a non-metric Set traits class.

Member Typedef Documentation

◆ Difference_proxy_t

template<class Self_tp , class Element_tp , class Difference_tp = void>
using mysql::sets::Ordered_set_traits_interface< Self_tp, Element_tp, Difference_tp >::Difference_proxy_t = std::conditional_t<std::same_as<Difference_tp, void>, int, Difference_tp>
private

◆ Difference_t

template<class Self_tp , class Element_tp , class Difference_tp = void>
using mysql::sets::Ordered_set_traits_interface< Self_tp, Element_tp, Difference_tp >::Difference_t = Difference_tp

◆ Element_t

template<class Self_tp , class Element_tp , class Difference_tp = void>
using mysql::sets::Ordered_set_traits_interface< Self_tp, Element_tp, Difference_tp >::Element_t = Element_tp

◆ Less_t

template<class Self_tp , class Element_tp , class Difference_tp = void>
using mysql::sets::Ordered_set_traits_interface< Self_tp, Element_tp, Difference_tp >::Less_t = detail::Less<Self_tp, Element_tp>

◆ Self_t

template<class Self_tp , class Element_tp , class Difference_tp = void>
using mysql::sets::Ordered_set_traits_interface< Self_tp, Element_tp, Difference_tp >::Self_t = Self_tp
private

◆ This_t

template<class Self_tp , class Element_tp , class Difference_tp = void>
using mysql::sets::Ordered_set_traits_interface< Self_tp, Element_tp, Difference_tp >::This_t = Ordered_set_traits_interface<Self_t, Element_tp, Difference_tp>
private

Member Function Documentation

◆ add() [1/3]

template<class Self_tp , class Element_tp , class Difference_tp = void>
static constexpr Difference_t mysql::sets::Ordered_set_traits_interface< Self_tp, Element_tp, Difference_tp >::add ( const Difference_proxy_t left,
const Difference_proxy_t right 
)
inlinestaticconstexpr
Returns
The sum of two boundary differences.

We use nodiscard instead of nodiscard because nodiscard works when the return type is void.

◆ add() [2/3]

template<class Self_tp , class Element_tp , class Difference_tp = void>
static constexpr Element_t mysql::sets::Ordered_set_traits_interface< Self_tp, Element_tp, Difference_tp >::add ( const Difference_proxy_t left,
const Element_t right 
)
inlinestaticconstexpr
Returns
The sum of a boundary difference and a boundary.

◆ add() [3/3]

template<class Self_tp , class Element_tp , class Difference_tp = void>
static constexpr Element_t mysql::sets::Ordered_set_traits_interface< Self_tp, Element_tp, Difference_tp >::add ( const Element_t left,
const Difference_proxy_t right 
)
inlinestaticconstexpr
Returns
The sum of a boundary and a boundary difference.

◆ cmp()

template<class Self_tp , class Element_tp , class Difference_tp = void>
static constexpr std::strong_ordering mysql::sets::Ordered_set_traits_interface< Self_tp, Element_tp, Difference_tp >::cmp ( const Element_t left,
const Element_t right 
)
inlinestaticconstexpr

◆ ge()

template<class Self_tp , class Element_tp , class Difference_tp = void>
static constexpr bool mysql::sets::Ordered_set_traits_interface< Self_tp, Element_tp, Difference_tp >::ge ( const Element_t left,
const Element_t right 
)
inlinestaticconstexpr
Returns
true if left >= right

◆ gt()

template<class Self_tp , class Element_tp , class Difference_tp = void>
static constexpr bool mysql::sets::Ordered_set_traits_interface< Self_tp, Element_tp, Difference_tp >::gt ( const Element_t left,
const Element_t right 
)
inlinestaticconstexpr
Returns
true if left > right

◆ in_range()

template<class Self_tp , class Element_tp , class Difference_tp = void>
static constexpr bool mysql::sets::Ordered_set_traits_interface< Self_tp, Element_tp, Difference_tp >::in_range ( const Element_t element)
inlinestaticconstexpr
Returns
true if min <= element < max_exclusive.

◆ le()

template<class Self_tp , class Element_tp , class Difference_tp = void>
static constexpr bool mysql::sets::Ordered_set_traits_interface< Self_tp, Element_tp, Difference_tp >::le ( const Element_t left,
const Element_t right 
)
inlinestaticconstexpr
Returns
true if left <= right

◆ lt()

template<class Self_tp , class Element_tp , class Difference_tp = void>
static constexpr bool mysql::sets::Ordered_set_traits_interface< Self_tp, Element_tp, Difference_tp >::lt ( const Element_t left,
const Element_t right 
)
inlinestaticconstexpr

◆ sub()

template<class Self_tp , class Element_tp , class Difference_tp = void>
static constexpr Difference_t mysql::sets::Ordered_set_traits_interface< Self_tp, Element_tp, Difference_tp >::sub ( const Element_t left,
const Element_t right 
)
inlinestaticconstexpr
Returns
The difference between two boundaries.

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