IceShard 1
A personal game engine project, with development focused on 2D/2.5D games.
Loading...
Searching...
No Matches
strong_type_integral.hxx File Reference

Go to the source code of this file.

Classes

struct  ice::StrongNumeric
 Type tag to enable utility functions for strongly typed numeric values. More...

Namespaces

namespace  ice
 SPDX-License-Identifier: MIT.
namespace  ice::detail
namespace  ice::detail::numeric

Concepts

concept  ice::StrongNumericType
 Concept used to determine if a struct is considerd a strong number wrapper.

Typedefs

template<typename T>
using ice::StrongNumericBase = typename ice::detail::ExtractMemberType<decltype(&T::value)>::Type

Enumerations

enum  ice::detail::numeric::Operator {
  ice::detail::numeric::Add , ice::detail::numeric::Sub , ice::detail::numeric::Neg , ice::detail::numeric::Mul ,
  ice::detail::numeric::Div , ice::detail::numeric::AddEq , ice::detail::numeric::SubEq , ice::detail::numeric::MulEq ,
  ice::detail::numeric::DivEq
}

Functions

template<typename T>
requires ice::StrongNumericType<T>
constexpr auto ice::operator== (T left, T right) noexcept -> bool
template<typename T>
requires ice::StrongNumericType<T>
constexpr auto ice::operator<=> (T left, T right) noexcept
template<typename T>
requires StrongNumericType<T>
constexpr auto ice::operator+ (T left, T right) noexcept -> T
template<typename T>
requires StrongNumericType<T>
constexpr auto ice::operator- (T left, T right) noexcept -> T
template<typename T>
requires StrongNumericType<T>
constexpr auto ice::operator- (T left) noexcept -> T
template<typename T>
requires StrongNumericType<T>
constexpr auto ice::operator* (T left, T right) noexcept -> T
template<typename T>
requires StrongNumericType<T>
constexpr auto ice::operator* (T left, ice::StrongNumericBase< T > right) noexcept -> T
template<typename T>
requires StrongNumericType<T>
constexpr auto ice::operator/ (T left, T right) noexcept -> T
template<typename T>
requires StrongNumericType<T>
constexpr auto ice::operator/ (T left, ice::StrongNumericBase< T > right) noexcept -> T
template<typename T>
requires StrongNumericType<T>
constexpr auto ice::operator+= (T &left, T right) noexcept -> T &
template<typename T>
requires StrongNumericType<T>
constexpr auto ice::operator-= (T &left, T right) noexcept -> T &
template<typename T>
requires StrongNumericType<T>
constexpr auto ice::operator*= (T &left, T right) noexcept -> T &
template<typename T>
requires StrongNumericType<T>
constexpr auto ice::operator*= (T &left, ice::StrongNumericBase< T > right) noexcept -> T &
template<typename T>
requires StrongNumericType<T>
constexpr auto ice::operator/= (T &left, T right) noexcept -> T &
template<typename T>
requires StrongNumericType<T>
constexpr auto ice::operator/= (T &left, ice::StrongNumericBase< T > right) noexcept -> T &