ELC in dev
ELC-lang
载入中...
搜索中...
未找到
elc::defs::base 命名空间参考

命名空间

 
namespace  bit
 
namespace  constexpr_str_n
 
namespace  function_base_n
 
namespace  hash_n
 
namespace  iterator_n
 
namespace  literal_support
 
namespace  magic_number
 
namespace  math
 
namespace  note_n
 
namespace  null_ptr_n
 
namespace  range_n
 
namespace  sort_n
 
namespace  string_view_n
 

struct  align_as_t
 
struct  attribute
 
struct  base_type_info_t
 自动重整类型名并在析构时释放重整结果,对于gcc和clang的傻逼实现 更多...
 
struct  bitset
 
class  build_by_get_only
 
struct  byteset
 
struct  common_attribute_pack
 
struct  compare_t
 
struct  cons_t
 
struct  count_able
 
struct  data_block
 
struct  data_view
 
struct  data_view< const T >
 
struct  demangle_name_t
 
struct  discard_t
 
struct  do_nothing_t
 
class  empty_type
 
struct  end_by_zero_t
 
struct  equal_t
 
class  flag
 
struct  invoke_t
 
struct  just_an_part_t
 
struct  list_t
 
struct  logical_bool
 
class  mark_able
 
struct  max_t
 
class  maybe_fail_reference
 
struct  min_t
 
class  never_in_array
 
struct  never_ref_num_zero_t
 引用计数从不为0的构造 更多...
 
struct  non_copy_assign_able
 禁止复制赋值 更多...
 
struct  non_copy_construct_able
 禁止复制构造 更多...
 
struct  non_copyable
 禁止默认合成的复制 更多...
 
struct  non_default_assign_able
 禁止默认合成的赋值 更多...
 
struct  non_default_construct_able
 禁止默认合成的构造 更多...
 
struct  non_move_assign_able
 禁止移动赋值 更多...
 
struct  non_move_construct_able
 禁止移动构造 更多...
 
struct  non_moveable
 禁止默认合成的移动 更多...
 
struct  pre_alloc_t
 预分配内存 更多...
 
struct  special_attribute_pack
 
struct  special_init_t
 特殊构造 更多...
 
struct  times_provider_t
 
struct  type_info_t
 
struct  type_name_t
 
struct  zero_t
 

概念

concept  is_pointer
 判断类型是否为指针
 

类型定义

template<class T >
using remove_cvref = ::std::remove_cvref_t< T >
 
template<class T >
using remove_cv = ::std::remove_cv_t< T >
 
template<class T >
using remove_ref = ::std::remove_reference_t< T >
 
template<bool B, class T , class F >
using conditional = ::std::conditional_t< B, T, F >
 
typedef decltype(null_ptr) null_ptr_t
 
typedef decltype(nullptrnullptr_t
 
typedef voidpointer
 未知类型指针
 
typedef const voidconst_pointer
 未知类型指针,不可写
 
typedef hash_n::hash_value_t hash_t
 
typedef hash_n::unstable_hash_value_t unstable_hash_t
 

枚举

enum class  flag_set_type : bool { seted =true , not_set =false }
 
enum class  mark_type : bool { marked =true , not_mark =false }
 

函数

template<class T , class U >
auto template_warning_helper (U &&a) noexcept
 
template<typename T , typename U >
autoassign (T &&a, U &&b) noexcept(noexcept((a=b)))
 
void the_destroy () noexcept=delete
 
template<typename T >
static void destroy (T *a) noexcept
 
template<typename T1 , typename T2 >
constexpr void swap (T1 &a, T2 &b)
 
template<typename T1 , typename T2 >
constexpr T1 swap (T1 &a, const T2 &b)
 
template<typename T >
constexpr constadd_const (T a) noexcept
 对值追加const
 
template<typename T >
constexpr constadd_const_by_value (T a) noexcept
 
template<typename T >
constexpr const T & add_const (T &a) noexcept
 对引用追加const
 
template<typename T >
constexpr const T & add_const_by_ref (T &a) noexcept
 
template<typename T >
constexpr T & remove_const (const T &a) noexcept
 对引用移除const
 
template<typename T >
constexpr T & remove_const_by_ref (const T &a) noexcept
 
template<typename T >
constexpr const T * add_const (T *a) noexcept
 对指针追加const
 
template<typename T >
constexpr const T * add_const_by_ptr (T *a) noexcept
 
template<typename T >
constexpr T * remove_const (const T *a) noexcept
 对指针移除const
 
template<typename T >
constexpr T * remove_const_by_ptr (const T *a) noexcept
 
template<typename T >
constexpr T * launder_remove_const (const T *a) noexcept
 对指针移除const
 
template<typename T >
constexpr T * launder_remove_const_by_ptr (const T *a) noexcept
 
template<typename T , typename U >
constexprdown_cast (U a) noexcept
 向下转型至
 
template<class T , class attribute_name >
T * get_handle (attribute< T, attribute_name > *a) noexcept
 
template<class T , class attribute_name >
const T * get_handle (const attribute< T, attribute_name > *a) noexcept
 
template<class T , template< class >class attribute_name>
T * get_handle (attribute< T, attribute_name< T > > *a) noexcept
 
template<class T , template< class >class attribute_name>
const T * get_handle (const attribute< T, attribute_name< T > > *a) noexcept
 
template<class attribute_name , class T >
auto attribute_ptr_cast (T *ptr) noexcept
 
template<class attribute_name , class T >
auto attribute_ptr_cast (const T *ptr) noexcept
 
template<class attribute_name , class T >
autoattribute_cast (T &t) noexcept
 
template<class T >
constexpr bool operator== (const type_info_t< T > &, const type_info_t< T > &)
 
template<class T , class U >
constexpr bool operator== (const type_info_t< T > &, const type_info_t< U > &)
 
template<typename T >
constexpr auto is_eq (T &&a, T &&b) noexcept(noexcept((&a==&b)))
 
template<typename T >
constexpr auto is_not_eq (T &&a, T &&b) noexcept(noexcept((!is_eq(a, b))))
 
template<class T >
constexpr T & data_cast (byte *p) noexcept
 
template<class T >
constexpr T & launder_data_cast (byte *p) noexcept
 
template<class T >
constexpr T * data_ptr_cast (byte *p) noexcept
 
template<class T >
constexpr T * launder_data_ptr_cast (byte *p) noexcept
 
template<class T >
constexpr bytecast_to_data (T *p) noexcept
 
template<class T >
constexpr bytelaunder_cast_to_data (T *p) noexcept
 
template<class T >
constexpr const bytecast_to_data (const T *p) noexcept
 
template<class T >
constexpr const bytelaunder_cast_to_data (const T *p) noexcept
 
template<class U , class T >
constexpr Uunion_cast (T &&t) noexcept
 
template<class U , class T >
constexpr Ulaunder_union_cast (T &&t) noexcept
 
template<class T >
constexpr bool full_equal_in_byte (const T &a, const T &b) noexcept
 
void the_pointer_to_bool () noexcept=delete
 
template<typename T >
constexpr auto pointer_to_bool (T *a) noexcept
 指针转bool的重载接口,允许类对此进行自定义 elc内部的指针转bool应当视情况使用默认配置或此重载接口
 
void the_pointer_equal () noexcept=delete
 
template<typename T >
constexpr auto pointer_equal (T *a, T *b) noexcept
 指针比较的重载接口,允许类对此进行自定义 elc内部的指针比较应当视情况使用默认配置或此重载接口
 
constexpr ptrdiff_t get_off_set (note::from_t< const_pointer >a, note::to_t< const_pointer >b) noexcept
 获取两个指针的偏移
 
template<class T >
constexpr auto apply_off_set (T *a, ptrdiff_t c) noexcept
 应用偏移
 
template<class T >
constexpr auto unapply_off_set (T *b, ptrdiff_t c) noexcept
 反向应用偏移
 
template<class T >
constexpr bool is_all_byte_zero (T &&a) noexcept
 
template<class T >
size_t the_number_of (type_info_t< T >) noexcept
 

变量

template<class T >
constexpr bool template_error_helper =1000-7==114514
 
template<class T , class U >
constexpr bool is_base_of = ::std::is_convertible_v<remove_cvref<U>*,remove_cvref<T>*>
 
constexpr struct elc::defs::base::discard_t discard
 
template<typename T >
const_default_value_of {}
 
constexpr struct elc::defs::base::do_nothing_t do_nothing
 
constexpr struct elc::defs::base::never_ref_num_zero_t never_ref_num_zero
 
constexpr struct elc::defs::base::special_init_t special_init
 
constexpr struct elc::defs::base::pre_alloc_t pre_alloc
 
template<class T >
constexpr type_info_t< T > type_info {}
 
constexpr struct elc::defs::base::end_by_zero_t end_by_zero
 
constexpr struct elc::defs::base::just_an_part_t just_an_part
 
constexpr struct elc::defs::base::equal_t equal
 
constexpr struct elc::defs::base::compare_t compare
 
constexpr struct elc::defs::base::max_t max
 
constexpr struct elc::defs::base::min_t min
 
template<basic_integer_type T>
constexpr auto number_of_possible_values_per =uintmax_index_t(max(type_info<::std::make_unsigned_t<T>>))+1
 
template<class... Ts>
constexpr size_t max_align_of =max({alignof(Ts)...})
 
template<class... Ts>
constexpr size_t max_size_of =max({sizeof(Ts)...})
 
constexpr struct elc::defs::base::zero_t zero
 
constexpr logical_bool neither {special_init,0,0}
 
constexpr logical_bool either {special_init,1,1}
 
constexpr logical_bool unknown {special_init,0,0,1}
 
template<typename T >
constexpr invoke_t< T > invoke {}
 

类型定义说明

◆ conditional

template<bool B, class T , class F >
using elc::defs::base::conditional = typedef ::std::conditional_t<B,T,F>

在文件 all_defs.cpp841 行定义.

◆ const_pointer

未知类型指针,不可写

在文件 all_defs.cpp9332 行定义.

◆ hash_t

◆ null_ptr_t

在文件 all_defs.cpp8843 行定义.

◆ nullptr_t

◆ pointer

未知类型指针

在文件 all_defs.cpp9330 行定义.

◆ remove_cv

template<class T >
using elc::defs::base::remove_cv = typedef ::std::remove_cv_t<T>

在文件 all_defs.cpp837 行定义.

◆ remove_cvref

template<class T >
using elc::defs::base::remove_cvref = typedef ::std::remove_cvref_t<T>

在文件 all_defs.cpp835 行定义.

◆ remove_ref

template<class T >
using elc::defs::base::remove_ref = typedef ::std::remove_reference_t<T>

在文件 all_defs.cpp839 行定义.

◆ unstable_hash_t

枚举类型说明

◆ flag_set_type

枚举值
seted 
not_set 

在文件 all_defs.cpp12675 行定义.

◆ mark_type

枚举值
marked 
not_mark 

在文件 all_defs.cpp12730 行定义.

函数说明

◆ add_const() [1/3]

template<typename T >
constexpr const T & elc::defs::base::add_const ( T &  a)
inlineconstexprnoexcept

对引用追加const

在文件 all_defs.cpp1108 行定义.

1108{return a;}

◆ add_const() [2/3]

template<typename T >
constexpr const T * elc::defs::base::add_const ( T *  a)
inlineconstexprnoexcept

对指针追加const

在文件 all_defs.cpp1118 行定义.

1118{return a;}

◆ add_const() [3/3]

template<typename T >
constexpr const T elc::defs::base::add_const ( a)
inlineconstexprnoexcept

对值追加const

在文件 all_defs.cpp1103 行定义.

1103{return a;}
这是这个函数的调用关系图:

◆ add_const_by_ptr()

template<typename T >
constexpr const T * elc::defs::base::add_const_by_ptr ( T *  a)
inlineconstexprnoexcept

在文件 all_defs.cpp1120 行定义.

1120{return a;}

◆ add_const_by_ref()

template<typename T >
constexpr const T & elc::defs::base::add_const_by_ref ( T &  a)
inlineconstexprnoexcept

在文件 all_defs.cpp1110 行定义.

1110{return a;}

◆ add_const_by_value()

template<typename T >
constexpr const T elc::defs::base::add_const_by_value ( a)
inlineconstexprnoexcept

在文件 all_defs.cpp1105 行定义.

1105{return a;}
这是这个函数的调用关系图:

◆ apply_off_set()

template<class T >
constexpr auto elc::defs::base::apply_off_set ( T *  a,
ptrdiff_t  c 
)
constexprnoexcept

应用偏移

在文件 all_defs.cpp9340 行定义.

9340 {
9341 return cast_to_data(a)+c;//a+c == b
9342}
constexpr byte * cast_to_data(T *p) noexcept
函数调用图:
这是这个函数的调用关系图:

◆ assign()

template<typename T , typename U >
auto & elc::defs::base::assign ( T &&  a,
U &&  b 
)
inlinenoexcept

在文件 all_defs.cpp975 行定义.

975 {//为绕过条件内赋值时の警告而使用
976 a=b;
977 return a;
978}
这是这个函数的调用关系图:

◆ attribute_cast()

template<class attribute_name , class T >
auto & elc::defs::base::attribute_cast ( T &  t)
inlinenoexcept

在文件 all_defs.cpp1335 行定义.

1335 {
1336 return*attribute_ptr_cast<attribute_name>(&t);
1337}
函数调用图:

◆ attribute_ptr_cast() [1/2]

template<class attribute_name , class T >
auto elc::defs::base::attribute_ptr_cast ( const T *  ptr)
inlinenoexcept

在文件 all_defs.cpp1326 行定义.

1326 {
1327 return static_cast<const attribute_name*>(ptr);
1328}
函数调用图:

◆ attribute_ptr_cast() [2/2]

template<class attribute_name , class T >
auto elc::defs::base::attribute_ptr_cast ( T *  ptr)
inlinenoexcept

在文件 all_defs.cpp1322 行定义.

1322 {
1323 return static_cast<attribute_name*>(ptr);
1324}
函数调用图:

◆ cast_to_data() [1/2]

template<class T >
constexpr const byte * elc::defs::base::cast_to_data ( const T *  p)
inlineconstexprnoexcept

功能: const T* 指针转换为 const byte*,不进行任何检查 用法: cast_to_data(const T*) -> const byte*

在文件 all_defs.cpp9171 行定义.

9171{return reinterpret_cast<const byte*>(p);}
函数调用图:

◆ cast_to_data() [2/2]

template<class T >
constexpr byte * elc::defs::base::cast_to_data ( T *  p)
inlineconstexprnoexcept

功能: T* 指针转换为 byte*,不进行任何检查 用法: cast_to_data(T*) -> byte*

在文件 all_defs.cpp9163 行定义.

9163{return reinterpret_cast<byte*>(p);}
函数调用图:
这是这个函数的调用关系图:

◆ data_cast()

template<class T >
constexpr T & elc::defs::base::data_cast ( byte p)
inlineconstexprnoexcept

功能: byte* 类型数据转换为 T&,不进行任何检查 用法: data_cast<T>(byte*) -> T&

在文件 all_defs.cpp9147 行定义.

9147{return*reinterpret_cast<T*>(p);}
函数调用图:

◆ data_ptr_cast()

template<class T >
constexpr T * elc::defs::base::data_ptr_cast ( byte p)
inlineconstexprnoexcept

功能: byte* 类型数据转换为 T*,不进行任何检查 用法: data_ptr_cast<T>(byte*) -> T*

在文件 all_defs.cpp9155 行定义.

9155{return reinterpret_cast<T*>(p);}
函数调用图:

◆ destroy()

template<typename T >
static void elc::defs::base::destroy ( T *  a)
staticnoexcept

在文件 all_defs.cpp993 行定义.

993 {
994 if constexpr(was_not_an_ill_form(the_destroy(a)))
995 the_destroy(a);
996 else
997 template_error("Please overload the function the_destroy in the namespace where this type is defined.");
998}
#define was_not_an_ill_form(...)
Definition all_defs.cpp:611
#define template_error(reason)
Definition all_defs.cpp:559
void the_destroy() noexcept=delete
函数调用图:

◆ down_cast()

template<typename T , typename U >
constexpr T elc::defs::base::down_cast ( a)
inlineconstexprnoexcept

向下转型至

在文件 all_defs.cpp1133 行定义.

1133{return static_cast<T>(a);}

◆ full_equal_in_byte()

template<class T >
constexpr bool elc::defs::base::full_equal_in_byte ( const T &  a,
const T &  b 
)
constexprnoexcept

功能: 比较两个类实例在内存中的内容是否相同 用法: full_equal_in_byte(const T&a,const T&b) -> bool

在文件 all_defs.cpp9265 行定义.

9265 {
9266 return equal(cast_to_data(&a),cast_to_data(&b),sizeof(T));
9267}
constexpr struct elc::defs::base::equal_t equal
函数调用图:

◆ get_handle() [1/4]

template<class T , class attribute_name >
T * elc::defs::base::get_handle ( attribute< T, attribute_name > *  a)
inlinenoexcept

在文件 all_defs.cpp1312 行定义.

1312{return a->get_handle();}
friend U * get_handle(attribute< U, another_attribute_name > *) noexcept
函数调用图:
这是这个函数的调用关系图:

◆ get_handle() [2/4]

template<class T , template< class >class attribute_name>
T * elc::defs::base::get_handle ( attribute< T, attribute_name< T > > *  a)
inlinenoexcept

在文件 all_defs.cpp1317 行定义.

1317{return get_handle<T,attribute_name<T>>(a);}
函数调用图:

◆ get_handle() [3/4]

template<class T , class attribute_name >
const T * elc::defs::base::get_handle ( const attribute< T, attribute_name > *  a)
inlinenoexcept

在文件 all_defs.cpp1314 行定义.

1314{return a->get_handle();}
函数调用图:

◆ get_handle() [4/4]

template<class T , template< class >class attribute_name>
const T * elc::defs::base::get_handle ( const attribute< T, attribute_name< T > > *  a)
inlinenoexcept

在文件 all_defs.cpp1319 行定义.

1319{return get_handle<T,attribute_name<T>>(a);}
函数调用图:

◆ get_off_set()

constexpr ptrdiff_t elc::defs::base::get_off_set ( note::from_t< const_pointer a,
note::to_t< const_pointer b 
)
constexprnoexcept

获取两个指针的偏移

在文件 all_defs.cpp9335 行定义.

9335 {
9336 return cast_to_data(b())-cast_to_data(a());//b-a == c
9337}
函数调用图:
这是这个函数的调用关系图:

◆ is_all_byte_zero()

template<class T >
constexpr bool elc::defs::base::is_all_byte_zero ( T &&  a)
inlineconstexprnoexcept

Returns true if all bytes in the input are zero.

参数
aThe input value.
返回
True if all bytes in the input are zero.

在文件 all_defs.cpp9399 行定义.

9399 {
9400 const byte*ptr=cast_to_data(addressof(a));
9401 const byte*end=ptr+sizeof(a);
9402 while(ptr!=end)
9403 if((unsigned char)(*ptr++))
9404 return false;
9405 return true;
9406}
函数调用图:
这是这个函数的调用关系图:

◆ is_eq()

template<typename T >
constexpr auto elc::defs::base::is_eq ( T &&  a,
T &&  b 
)
constexprnoexcept

在文件 all_defs.cpp1924 行定义.

1924 {
1925 return &a==&b;
1926}
函数调用图:
这是这个函数的调用关系图:

◆ is_not_eq()

template<typename T >
constexpr auto elc::defs::base::is_not_eq ( T &&  a,
T &&  b 
)
constexprnoexcept

在文件 all_defs.cpp1928 行定义.

1928 {
1929 return!is_eq(a,b);
1930}
constexpr auto is_eq(T &&a, T &&b) noexcept(noexcept((&a==&b)))
函数调用图:

◆ launder_cast_to_data() [1/2]

template<class T >
constexpr const byte * elc::defs::base::launder_cast_to_data ( const T *  p)
inlineconstexprnoexcept

在文件 all_defs.cpp9173 行定义.

9173{return ::std::launder(cast_to_data(p));}
函数调用图:

◆ launder_cast_to_data() [2/2]

template<class T >
constexpr byte * elc::defs::base::launder_cast_to_data ( T *  p)
inlineconstexprnoexcept

在文件 all_defs.cpp9165 行定义.

9165{return ::std::launder(cast_to_data(p));}
函数调用图:

◆ launder_data_cast()

template<class T >
constexpr T & elc::defs::base::launder_data_cast ( byte p)
inlineconstexprnoexcept

在文件 all_defs.cpp9149 行定义.

9149{return*::std::launder(data_cast<T>(p));}
函数调用图:

◆ launder_data_ptr_cast()

template<class T >
constexpr T * elc::defs::base::launder_data_ptr_cast ( byte p)
inlineconstexprnoexcept

在文件 all_defs.cpp9157 行定义.

9157{return ::std::launder(data_ptr_cast<T>(p));}
函数调用图:

◆ launder_remove_const()

template<typename T >
constexpr T * elc::defs::base::launder_remove_const ( const T *  a)
inlineconstexprnoexcept

对指针移除const

在文件 all_defs.cpp1128 行定义.

1128{return ::std::launder(remove_const(a));}
constexpr T & remove_const(const T &a) noexcept
对引用移除const
函数调用图:

◆ launder_remove_const_by_ptr()

template<typename T >
constexpr T * elc::defs::base::launder_remove_const_by_ptr ( const T *  a)
inlineconstexprnoexcept

在文件 all_defs.cpp1130 行定义.

1130{return ::std::launder(remove_const(a));}
函数调用图:

◆ launder_union_cast()

template<class U , class T >
constexpr U & elc::defs::base::launder_union_cast ( T &&  t)
inlineconstexprnoexcept

在文件 all_defs.cpp9181 行定义.

9181{return*::std::launder(union_cast<U>(t));}
函数调用图:

◆ operator==() [1/2]

template<class T >
constexpr bool elc::defs::base::operator== ( const type_info_t< T > &  ,
const type_info_t< T > &   
)
constexpr

在文件 all_defs.cpp1533 行定义.

1533{return true;}
这是这个函数的调用关系图:

◆ operator==() [2/2]

template<class T , class U >
constexpr bool elc::defs::base::operator== ( const type_info_t< T > &  ,
const type_info_t< U > &   
)
constexpr

在文件 all_defs.cpp1535 行定义.

1535{return false;}

◆ pointer_equal()

template<typename T >
constexpr auto elc::defs::base::pointer_equal ( T *  a,
T *  b 
)
constexprnoexcept

指针比较的重载接口,允许类对此进行自定义 elc内部的指针比较应当视情况使用默认配置或此重载接口

在文件 all_defs.cpp9319 行定义.

9319 {
9320 if constexpr(was_not_an_ill_form(the_pointer_equal(a,b)))
9321 return the_pointer_equal(a,b);
9322 else
9323 return a==b;
9324}
void the_pointer_equal() noexcept=delete
函数调用图:
这是这个函数的调用关系图:

◆ pointer_to_bool()

template<typename T >
constexpr auto elc::defs::base::pointer_to_bool ( T *  a)
constexprnoexcept

指针转bool的重载接口,允许类对此进行自定义 elc内部的指针转bool应当视情况使用默认配置或此重载接口

在文件 all_defs.cpp9308 行定义.

9308 {
9310 return the_pointer_to_bool(a);
9311 else
9312 return null_ptr!=a;
9313}
void the_pointer_to_bool() noexcept=delete
函数调用图:
这是这个函数的调用关系图:

◆ remove_const() [1/2]

template<typename T >
constexpr T & elc::defs::base::remove_const ( const T &  a)
inlineconstexprnoexcept

对引用移除const

在文件 all_defs.cpp1113 行定义.

1113{return const_cast<T&>(a);}
这是这个函数的调用关系图:

◆ remove_const() [2/2]

template<typename T >
constexpr T * elc::defs::base::remove_const ( const T *  a)
inlineconstexprnoexcept

对指针移除const

在文件 all_defs.cpp1123 行定义.

1123{return const_cast<T*>(a);}

◆ remove_const_by_ptr()

template<typename T >
constexpr T * elc::defs::base::remove_const_by_ptr ( const T *  a)
inlineconstexprnoexcept

在文件 all_defs.cpp1125 行定义.

1125{return const_cast<T*>(a);}

◆ remove_const_by_ref()

template<typename T >
constexpr T & elc::defs::base::remove_const_by_ref ( const T &  a)
inlineconstexprnoexcept

在文件 all_defs.cpp1115 行定义.

1115{return const_cast<T&>(a);}

◆ swap() [1/2]

template<typename T1 , typename T2 >
constexpr T1 elc::defs::base::swap ( T1 a,
const T2 b 
)
inlineconstexpr

在文件 all_defs.cpp1029 行定义.

1029 {
1030 using ::std::move;
1031 T1 tmp=move(a);
1032 a=b;
1033 return tmp;
1034}

◆ swap() [2/2]

template<typename T1 , typename T2 >
constexpr void elc::defs::base::swap ( T1 a,
T2 b 
)
inlineconstexpr

在文件 all_defs.cpp1010 行定义.

1010 {
1011 using ::std::move;
1012 auto tmp=move(b);
1013 b=move(a);
1014 a=move(tmp);
1015}
这是这个函数的调用关系图:

◆ template_warning_helper()

template<class T , class U >
auto elc::defs::base::template_warning_helper ( U &&  a)
inlinenoexcept

宏辅助,用以补全元编程错误宏template_warning的内容.

在文件 all_defs.cpp790 行定义.

790{return 0;}

◆ the_destroy()

void elc::defs::base::the_destroy ( )
deletenoexcept
这是这个函数的调用关系图:

◆ the_number_of()

template<class T >
size_t elc::defs::base::the_number_of ( type_info_t< T >  )
inlinenoexcept

在文件 all_defs.cpp12490 行定义.

12490 {
12491 if constexpr(type_info<T>.not_has_attribute(count_able))
12492 template_error("hey.");
12494}
这是这个函数的调用关系图:

◆ the_pointer_equal()

void elc::defs::base::the_pointer_equal ( )
deletenoexcept
这是这个函数的调用关系图:

◆ the_pointer_to_bool()

void elc::defs::base::the_pointer_to_bool ( )
deletenoexcept
这是这个函数的调用关系图:

◆ unapply_off_set()

template<class T >
constexpr auto elc::defs::base::unapply_off_set ( T *  b,
ptrdiff_t  c 
)
constexprnoexcept

反向应用偏移

在文件 all_defs.cpp9345 行定义.

9345 {
9346 return cast_to_data(b)-c;//b-c == a
9347}
函数调用图:

◆ union_cast()

template<class U , class T >
constexpr U & elc::defs::base::union_cast ( T &&  t)
inlineconstexprnoexcept

功能: T& 转换为 U&,不进行任何检查 用法: union_cast<U>(T&) -> U&

在文件 all_defs.cpp9179 行定义.

9179{return*reinterpret_cast<U*>(&t);}
函数调用图:
这是这个函数的调用关系图:

变量说明

◆ compare

constexpr struct elc::defs::base::compare_t elc::defs::base::compare

◆ const_default_value_of

template<typename T >
T elc::defs::base::const_default_value_of {}
inline

在文件 all_defs.cpp989 行定义.

989{};//?

◆ discard

constexpr struct elc::defs::base::discard_t elc::defs::base::discard

◆ do_nothing

constexpr struct elc::defs::base::do_nothing_t elc::defs::base::do_nothing

◆ either

constexpr logical_bool elc::defs::base::either {special_init,1,1}

在文件 all_defs.cpp12442 行定义.

12442{special_init,0,0},either{special_init,1,1},unknown{special_init,0,0,1};
constexpr struct elc::defs::base::special_init_t special_init
constexpr logical_bool either

◆ end_by_zero

constexpr struct elc::defs::base::end_by_zero_t elc::defs::base::end_by_zero

◆ equal

constexpr struct elc::defs::base::equal_t elc::defs::base::equal

◆ invoke

template<typename T >
constexpr invoke_t<T> elc::defs::base::invoke {}
constexpr

在文件 all_defs.cpp12589 行定义.

12589{};

◆ is_base_of

template<class T , class U >
constexpr bool elc::defs::base::is_base_of = ::std::is_convertible_v<remove_cvref<U>*,remove_cvref<T>*>
constexpr

在文件 all_defs.cpp843 行定义.

◆ just_an_part

constexpr struct elc::defs::base::just_an_part_t elc::defs::base::just_an_part

◆ max

constexpr struct elc::defs::base::max_t elc::defs::base::max

◆ max_align_of

template<class... Ts>
constexpr size_t elc::defs::base::max_align_of =max({alignof(Ts)...})
inlineconstexpr

功能: data_block辅助变量模板,接受数个类型并表现为其中的最大对齐值

在文件 all_defs.cpp9187 行定义.

◆ max_size_of

template<class... Ts>
constexpr size_t elc::defs::base::max_size_of =max({sizeof(Ts)...})
inlineconstexpr

功能: data_block辅助变量模板,接受数个类型并表现为其中的最大大小值

在文件 all_defs.cpp9192 行定义.

◆ min

constexpr struct elc::defs::base::min_t elc::defs::base::min

◆ neither

constexpr logical_bool elc::defs::base::neither {special_init,0,0}
constexpr

在文件 all_defs.cpp12442 行定义.

12442{special_init,0,0},either{special_init,1,1},unknown{special_init,0,0,1};

◆ never_ref_num_zero

constexpr struct elc::defs::base::never_ref_num_zero_t elc::defs::base::never_ref_num_zero

◆ number_of_possible_values_per

template<basic_integer_type T>
constexpr auto elc::defs::base::number_of_possible_values_per =uintmax_index_t(max(type_info<::std::make_unsigned_t<T>>))+1
constexpr

每个T的可能性大小

在文件 all_defs.cpp9140 行定义.

◆ pre_alloc

constexpr struct elc::defs::base::pre_alloc_t elc::defs::base::pre_alloc

◆ special_init

constexpr struct elc::defs::base::special_init_t elc::defs::base::special_init

◆ template_error_helper

template<class T >
constexpr bool elc::defs::base::template_error_helper =1000-7==114514
constexpr

宏辅助,用以补全元编程错误宏template_error的内容.

在文件 all_defs.cpp784 行定义.

◆ type_info

template<class T >
constexpr type_info_t<T> elc::defs::base::type_info {}
constexpr

在文件 all_defs.cpp1530 行定义.

1530{};

◆ unknown

constexpr logical_bool elc::defs::base::unknown {special_init,0,0,1}

在文件 all_defs.cpp12442 行定义.

12442{special_init,0,0},either{special_init,1,1},unknown{special_init,0,0,1};

◆ zero

constexpr struct elc::defs::base::zero_t elc::defs::base::zero