maomao90's Library
A C++20 library for competitive programming.
Loading...
Searching...
No Matches
maomao90::internal::type_traits Namespace Reference

Classes

struct  is_pair
 
struct  is_pair< pair< T, U > >
 
struct  is_valid_setting
 
struct  is_valid_setting< complex< T >, PolySetting::fft_complex >
 
struct  is_valid_setting< T, PolySetting::fft >
 
struct  is_valid_setting< T, PolySetting::fft_sqrt >
 
struct  is_valid_setting< T, PolySetting::ntt >
 

Typedefs

template<typename T>
using is_broadly_signed = disjunction<is_signed<T>, is_same<T, __int128>>
 
template<typename T>
using is_broadly_unsigned
 
template<typename T>
using is_broadly_integral
 
template<typename T>
using is_broadly_signed_integral
 
template<typename T>
using is_broadly_unsigned_integral
 
template<typename T>
using is_32bit_or_less
 
template<typename T>
using is_64bit_or_less
 
template<typename T>
using safely_multipliable_unsigned
 
template<typename T>
using safely_multipliable_signed
 
template<typename T>
using safely_multipliable
 

Functions

 ENABLE_VALUE (is_broadly_signed)
 
 ENABLE_VALUE (is_broadly_unsigned)
 
 ENABLE_VALUE (is_broadly_integral)
 
 ENABLE_VALUE (is_broadly_signed_integral)
 
 ENABLE_VALUE (is_broadly_unsigned_integral)
 
 ENABLE_VALUE (is_32bit_or_less)
 
 ENABLE_VALUE (is_64bit_or_less)
 
 ENABLE_TYPE (safely_multipliable_unsigned)
 
 ENABLE_TYPE (safely_multipliable_signed)
 
 ENABLE_TYPE (safely_multipliable)
 
 ENABLE_VALUE (is_pair)
 

Variables

template<typename T, PolySetting poly_setting>
constexpr bool is_valid_setting_v = is_valid_setting<T, poly_setting>::value
 

Typedef Documentation

◆ is_broadly_signed

template<typename T>
using maomao90::internal::type_traits::is_broadly_signed = disjunction<is_signed<T>, is_same<T, __int128>>

◆ is_broadly_unsigned

Initial value:
disjunction<is_unsigned<T>, is_same<T, unsigned __int128>>

◆ is_broadly_integral

Initial value:
disjunction<is_integral<T>, is_same<T, __int128>,
is_same<T, unsigned __int128>>

◆ is_broadly_signed_integral

Initial value:
conjunction<is_broadly_signed<T>, is_broadly_integral<T>>
disjunction< is_integral< T >, is_same< T, __int128 >, is_same< T, unsigned __int128 > > is_broadly_integral
Definition type_traits.hpp:22

◆ is_broadly_unsigned_integral

Initial value:
conjunction<is_broadly_unsigned<T>, is_broadly_integral<T>>

◆ is_32bit_or_less

Initial value:
bool_constant<numeric_limits<T>::max() <=
numeric_limits<unsigned int>::max()>

◆ is_64bit_or_less

Initial value:
bool_constant<numeric_limits<T>::max() <=
numeric_limits<unsigned long long>::max()>

◆ safely_multipliable_unsigned

Initial value:
conditional<is_32bit_or_less_v<T>, unsigned long long, unsigned __int128>

◆ safely_multipliable_signed

Initial value:
conditional<is_32bit_or_less_v<T>, long long, __int128>

◆ safely_multipliable

Initial value:
conditional<is_signed_v<T>, safely_multipliable_signed_t<T>,
safely_multipliable_unsigned_t<T>>

Function Documentation

◆ ENABLE_VALUE() [1/8]

maomao90::internal::type_traits::ENABLE_VALUE ( is_broadly_signed )

◆ ENABLE_VALUE() [2/8]

maomao90::internal::type_traits::ENABLE_VALUE ( is_broadly_unsigned )

◆ ENABLE_VALUE() [3/8]

maomao90::internal::type_traits::ENABLE_VALUE ( is_broadly_integral )

◆ ENABLE_VALUE() [4/8]

maomao90::internal::type_traits::ENABLE_VALUE ( is_broadly_signed_integral )

◆ ENABLE_VALUE() [5/8]

maomao90::internal::type_traits::ENABLE_VALUE ( is_broadly_unsigned_integral )

◆ ENABLE_VALUE() [6/8]

maomao90::internal::type_traits::ENABLE_VALUE ( is_32bit_or_less )

◆ ENABLE_VALUE() [7/8]

maomao90::internal::type_traits::ENABLE_VALUE ( is_64bit_or_less )

◆ ENABLE_TYPE() [1/3]

maomao90::internal::type_traits::ENABLE_TYPE ( safely_multipliable_unsigned )

◆ ENABLE_TYPE() [2/3]

maomao90::internal::type_traits::ENABLE_TYPE ( safely_multipliable_signed )

◆ ENABLE_TYPE() [3/3]

maomao90::internal::type_traits::ENABLE_TYPE ( safely_multipliable )

◆ ENABLE_VALUE() [8/8]

maomao90::internal::type_traits::ENABLE_VALUE ( is_pair )

Variable Documentation

◆ is_valid_setting_v

template<typename T, PolySetting poly_setting>
bool maomao90::internal::type_traits::is_valid_setting_v = is_valid_setting<T, poly_setting>::value
constexpr