ELC in dev
ELC-lang
载入中...
搜索中...
未找到
elc::defs::memory::lifetime_n::destruct_t结构体 参考

struct  array_destruct_t
 
struct  not_t
 

Public 成员函数

template<class T >
requires able<T>
void operator() (T *begin) const noexcept(nothrow< T >)
 
constexpr array_destruct_t operator[] (size_t size) const noexcept
 
constexpr not_t operator! () const noexcept
 

静态 Public 成员函数

template<class T >
requires able<T>
static void base_call (T *to) noexcept(nothrow< T >)
 
template<class T >
requires able<T>
static void base_call (T *begin, size_t size) noexcept(nothrow< T >)
 

静态 Public 属性

template<class T >
static constexpr bool able =destruct_able<T>
 
template<class T >
static constexpr bool nothrow =destruct_nothrow<T>
 
template<class T >
static constexpr bool trivial =destruct_trivial<T>
 

详细描述

用于销毁实例 用法: destruct.able<类型> -> bool destruct.nothrow<类型> -> bool

destruct(T*ptr) -> void (在ptr地址处析构T类型实例,T可为数组) destruct[size_t size](T*ptr) -> void (析构以ptr地址起始共size个T类型实例,T可为数组)

在文件 all_defs.cpp9667 行定义.

成员函数说明

◆ base_call() [1/2]

template<class T >
requires able<T>
static void elc::defs::memory::lifetime_n::destruct_t::base_call ( T *  begin,
size_t  size 
)
inlinestaticnoexcept

在文件 all_defs.cpp9688 行定义.

9688 {
9689 if constexpr(type_info<T>.has_attribute(never_in_array))
9690 template_error("You cannot perform array operations on never_in_array type.");
9691 if constexpr(!trivial<T>)
9692 while(size--)base_call(begin+size);
9693 }
#define template_error(reason)
Definition all_defs.cpp:559
constexpr T down_cast(U a) noexcept
向下转型至
static void base_call(T *to) noexcept(nothrow< T >)

◆ base_call() [2/2]

template<class T >
requires able<T>
static void elc::defs::memory::lifetime_n::destruct_t::base_call ( T *  to)
inlinestaticnoexcept

在文件 all_defs.cpp9676 行定义.

9676 {
9677 if constexpr(!trivial<T>)
9678 if constexpr(::std::is_array_v<T>)
9679 for(auto&i : *to)
9681 else
9683 to->~T();
9685 }
#define pop_msvc_warning()
Definition all_defs.cpp:478
#define push_and_disable_msvc_warning(...)
Definition all_defs.cpp:479
constexpr to_t< T > to(T v)

◆ operator!()

constexpr not_t elc::defs::memory::lifetime_n::destruct_t::operator! ( ) const
inlineconstexprnoexcept

在文件 all_defs.cpp9712 行定义.

9712{return not_t{};}

◆ operator()()

template<class T >
requires able<T>
void elc::defs::memory::lifetime_n::destruct_t::operator() ( T *  begin) const
inlinenoexcept

在文件 all_defs.cpp9696 行定义.

9696 {
9697 base_call(begin);
9698 }

◆ operator[]()

constexpr array_destruct_t elc::defs::memory::lifetime_n::destruct_t::operator[] ( size_t  size) const
inlineconstexprnoexcept

在文件 all_defs.cpp9708 行定义.

9708{return{size};}
constexpr size_t size(::size_t v)

类成员变量说明

◆ able

template<class T >
constexpr bool elc::defs::memory::lifetime_n::destruct_t::able =destruct_able<T>
staticconstexpr

在文件 all_defs.cpp9669 行定义.

◆ nothrow

template<class T >
constexpr bool elc::defs::memory::lifetime_n::destruct_t::nothrow =destruct_nothrow<T>
staticconstexpr

在文件 all_defs.cpp9671 行定义.

◆ trivial

template<class T >
constexpr bool elc::defs::memory::lifetime_n::destruct_t::trivial =destruct_trivial<T>
staticconstexpr

在文件 all_defs.cpp9673 行定义.


该结构体的文档由以下文件生成: