1#ifndef NEFORCE_CORE_INTERFACE_IPACKAGE_HPP__
2#define NEFORCE_CORE_INTERFACE_IPACKAGE_HPP__
15NEFORCE_BEGIN_NAMESPACE__
32template <
typename T,
typename PackageT>
41 constexpr const T& derived()
const noexcept {
return static_cast<const T&
>(*this); }
47 constexpr T& derived()
noexcept {
return static_cast<T&
>(*this); }
56 constexpr ipackage() noexcept = default;
110 NEFORCE_NODISCARD
static constexpr size_t bits() noexcept {
return sizeof(
package_type) * 8; }
129 NEFORCE_NODISCARD
constexpr bool operator==(
const T& other)
const noexcept {
return value_ == other.value_; }
136 NEFORCE_NODISCARD
constexpr bool operator<(
const T& other)
const noexcept {
return value_ < other.value_; }
175 if (other.value_ == 0) {
284NEFORCE_END_NAMESPACE__
NEFORCE_INLINE17 constexpr bool is_arithmetic_v
is_arithmetic的便捷变量模板
unsigned int uint32_t
32位无符号整数类型
long long int64_t
64位有符号整数类型
NEFORCE_CONST_FUNCTION NEFORCE_CONSTEXPR14 enable_if_t< is_floating_point_v< T >, T > mod(const T x, const T y)
浮点数取模运算
NEFORCE_NODISCARD constexpr bool operator==(const T &other) const noexcept
相等比较操作符
constexpr T & operator<<=(const uint32_t shift)
左移赋值操作符
constexpr T & operator*=(const T &other) noexcept
乘法赋值操作符
constexpr T & operator/=(const T &other)
除法赋值操作符
NEFORCE_NODISCARD constexpr bool operator<(const T &other) const noexcept
小于比较操作符
constexpr T & operator>>=(const uint32_t shift)
右移赋值操作符
constexpr T & operator&=(const T &other) noexcept
按位与赋值操作符
static NEFORCE_NODISCARD constexpr size_t bytes() noexcept
获取类型字节大小
constexpr T & operator^=(const T &other) noexcept
按位异或赋值操作符
constexpr T & operator-=(const T &other) noexcept
减法赋值操作符
NEFORCE_NODISCARD constexpr int64_t to_int64() const noexcept
转换为64位整数
constexpr T & operator|=(const T &other) noexcept
按位或赋值操作符
static NEFORCE_NODISCARD constexpr size_t bits() noexcept
获取类型位大小
constexpr T & operator%=(const T &other)
取模赋值操作符
constexpr T operator~() const noexcept
按位取反操作符
PackageT package_type
包装类型
NEFORCE_NODISCARD constexpr T operator-() const noexcept
一元负号操作符
constexpr T & operator++() noexcept
前置递增操作符
NEFORCE_NODISCARD constexpr package_type value() const noexcept
NEFORCE_NODISCARD constexpr size_t to_hash() const noexcept
计算哈希值
constexpr T & operator+=(const T &other) noexcept
加法赋值操作符
constexpr void swap(T &other) noexcept
交换内容
constexpr T & operator--() noexcept
前置递减操作符
NEFORCE_CONSTEXPR20 ~ipackage()=default
受保护的析构函数