di 0.1.0
Loading...
Searching...
No Matches
di::util::StrongInt< Tag > Class Template Reference

#include <di/util/strong_int.h>

Inheritance diagram for di::util::StrongInt< Tag >:

Public Types

using IsAtom = void
using Type = Tag::Type
using SSizeType = detail::SSizeType<Tag>

Public Member Functions

 StrongInt ()=default
constexpr StrongInt (Type value)
constexpr auto raw_value () const -> Type
constexpr auto operator+= (Type x) -> StrongInt &
constexpr auto operator+= (SSizeType x) -> StrongInt &requires(!concepts::SameAs< SSizeType, Type >)
constexpr auto operator-= (Type x) -> StrongInt &
constexpr auto operator-= (SSizeType x) -> StrongInt &requires(!concepts::SameAs< SSizeType, Type >)
constexpr auto operator++ () -> StrongInt &
constexpr auto operator++ (int) -> StrongInt
constexpr auto operator-- () -> StrongInt &
constexpr auto operator-- (int) -> StrongInt

Friends

constexpr friend auto operator+ (StrongInt a, Type b) -> StrongInt
constexpr friend auto operator+ (StrongInt a, SSizeType b) -> StrongInt requires(!concepts::SameAs< SSizeType, Type >)
constexpr friend auto operator+ (Type a, StrongInt b) -> StrongInt
constexpr friend auto operator+ (SSizeType a, StrongInt b) -> StrongInt requires(!concepts::SameAs< SSizeType, Type >)
constexpr friend auto operator- (StrongInt a, Type b) -> StrongInt
constexpr friend auto operator- (StrongInt a, SSizeType b) -> StrongInt requires(!concepts::SameAs< SSizeType, Type >)
constexpr friend auto operator- (Type a, StrongInt b) -> StrongInt
constexpr friend auto operator- (SSizeType a, StrongInt b) -> StrongInt requires(!concepts::SameAs< SSizeType, Type >)
constexpr friend auto operator- (StrongInt a, StrongInt b) -> SSizeType
constexpr friend auto operator== (StrongInt a, StrongInt b) -> bool
constexpr friend auto operator<=> (StrongInt a, StrongInt b) -> di::strong_ordering
template<concepts::Encoding Enc>
constexpr friend auto tag_invoke (types::Tag< fmt::formatter_in_place >, InPlaceType< StrongInt >, FormatParseContext< Enc > &parse_context, bool debug)

Member Typedef Documentation

◆ IsAtom

template<detail::Tag Tag>
using di::util::StrongInt< Tag >::IsAtom = void

◆ SSizeType

template<detail::Tag Tag>
using di::util::StrongInt< Tag >::SSizeType = detail::SSizeType<Tag>

◆ Type

template<detail::Tag Tag>
using di::util::StrongInt< Tag >::Type = Tag::Type

Constructor & Destructor Documentation

◆ StrongInt() [1/2]

template<detail::Tag Tag>
di::util::StrongInt< Tag >::StrongInt ( )
default

◆ StrongInt() [2/2]

template<detail::Tag Tag>
di::util::StrongInt< Tag >::StrongInt ( Type value)
inlineexplicitconstexpr

Member Function Documentation

◆ operator++() [1/2]

template<detail::Tag Tag>
auto di::util::StrongInt< Tag >::operator++ ( ) ->StrongInt &
inlineconstexpr

◆ operator++() [2/2]

template<detail::Tag Tag>
auto di::util::StrongInt< Tag >::operator++ ( int ) ->StrongInt
inlineconstexpr

◆ operator+=() [1/2]

template<detail::Tag Tag>
auto di::util::StrongInt< Tag >::operator+= ( SSizeType x) ->StrongInt &requires(!concepts::SameAs< SSizeType, Type >)
inlineconstexpr

◆ operator+=() [2/2]

template<detail::Tag Tag>
auto di::util::StrongInt< Tag >::operator+= ( Type x) ->StrongInt &
inlineconstexpr

◆ operator--() [1/2]

template<detail::Tag Tag>
auto di::util::StrongInt< Tag >::operator-- ( ) ->StrongInt &
inlineconstexpr

◆ operator--() [2/2]

template<detail::Tag Tag>
auto di::util::StrongInt< Tag >::operator-- ( int ) ->StrongInt
inlineconstexpr

◆ operator-=() [1/2]

template<detail::Tag Tag>
auto di::util::StrongInt< Tag >::operator-= ( SSizeType x) ->StrongInt &requires(!concepts::SameAs< SSizeType, Type >)
inlineconstexpr

◆ operator-=() [2/2]

template<detail::Tag Tag>
auto di::util::StrongInt< Tag >::operator-= ( Type x) ->StrongInt &
inlineconstexpr

◆ raw_value()

template<detail::Tag Tag>
auto di::util::StrongInt< Tag >::raw_value ( ) const->Type
inlineconstexpr

◆ operator+ [1/4]

template<detail::Tag Tag>
friend auto operator+ ( SSizeType a,
StrongInt< Tag > b )->StrongIntrequires(!concepts::SameAs< SSizeType, Type >)
friend

◆ operator+ [2/4]

template<detail::Tag Tag>
friend auto operator+ ( StrongInt< Tag > a,
SSizeType b )->StrongIntrequires(!concepts::SameAs< SSizeType, Type >)
friend

◆ operator+ [3/4]

template<detail::Tag Tag>
friend auto operator+ ( StrongInt< Tag > a,
Type b )->StrongInt
friend

◆ operator+ [4/4]

template<detail::Tag Tag>
friend auto operator+ ( Type a,
StrongInt< Tag > b )->StrongInt
friend

◆ operator- [1/5]

template<detail::Tag Tag>
friend auto operator- ( SSizeType a,
StrongInt< Tag > b )->StrongIntrequires(!concepts::SameAs< SSizeType, Type >)
friend

◆ operator- [2/5]

template<detail::Tag Tag>
friend auto operator- ( StrongInt< Tag > a,
SSizeType b )->StrongIntrequires(!concepts::SameAs< SSizeType, Type >)
friend

◆ operator- [3/5]

template<detail::Tag Tag>
friend auto operator- ( StrongInt< Tag > a,
StrongInt< Tag > b )->SSizeType
friend

◆ operator- [4/5]

template<detail::Tag Tag>
friend auto operator- ( StrongInt< Tag > a,
Type b )->StrongInt
friend

◆ operator- [5/5]

template<detail::Tag Tag>
friend auto operator- ( Type a,
StrongInt< Tag > b )->StrongInt
friend

◆ operator<=>

template<detail::Tag Tag>
friend auto operator<=> ( StrongInt< Tag > a,
StrongInt< Tag > b )->di::strong_ordering
friend

◆ operator==

template<detail::Tag Tag>
friend auto operator== ( StrongInt< Tag > a,
StrongInt< Tag > b )->bool
friend

◆ tag_invoke

template<detail::Tag Tag>
template<concepts::Encoding Enc>
friend auto tag_invoke ( types::Tag< fmt::formatter_in_place > ,
InPlaceType< StrongInt< Tag > > ,
FormatParseContext< Enc > & parse_context,
bool debug )
friend

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