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

struct  array_copy_assign_t
 

Public 成员函数

template<class T >
requires able<T>
T & operator() (T &a, const T &b) const noexcept(nothrow< T >)
 
constexpr array_copy_assign_t operator[] (size_t a) const noexcept
 

静态 Public 成员函数

template<class T >
requires able<T>
static T & base_call (T &a, const T &b) noexcept(nothrow< T >)
 
template<class T >
requires able<T>
static T * base_call (T *to, const T *from, size_t size) noexcept(nothrow< T >)
 
template<class T >
requires able<T>
static T * base_call (T *to, const T &from, size_t size) noexcept(nothrow< T >)
 

静态 Public 属性

template<class T >
static constexpr bool r_able
 
template<class T >
static constexpr bool able =r_able<T>?true:(copy_construct_able<T>&&destruct.able<T>)
 
template<class T >
static constexpr bool nothrow
 
template<class T >
static constexpr bool trivial
 

详细描述

在文件 all_defs.cpp10028 行定义.

成员函数说明

◆ base_call() [1/3]

template<class T >
requires able<T>
static T & elc::defs::memory::lifetime_n::copy_assign_t::base_call ( T &  a,
const T &  b 
)
inlinestaticnoexcept

在文件 all_defs.cpp10043 行定义.

10043 {
10044 if constexpr(r_able<T>)
10045 a=b;
10046 else{
10047 destruct(&a);
10048 construct<T>[&a](b);
10049 }
10050 return a;
10051 }
constexpr T down_cast(U a) noexcept
向下转型至
constexpr struct elc::defs::memory::lifetime_n::destruct_t destruct

◆ base_call() [2/3]

template<class T >
requires able<T>
static T * elc::defs::memory::lifetime_n::copy_assign_t::base_call ( T *  to,
const T &  from,
size_t  size 
)
inlinestaticnoexcept

在文件 all_defs.cpp10062 行定义.

10062 {
10063 if constexpr(trivial<T>)
10065 else
10066 while(size--)
10067 base_call(to[size],from);
10068 return to;
10069 }
constexpr to_t< T > to(T v)
requires ::std::is_trivially_copyable_v< T > T * super_speed_trivial_copy_from_one(T *to, const T &value, size_t size) noexcept
static T & base_call(T &a, const T &b) noexcept(nothrow< T >)
函数调用图:

◆ base_call() [3/3]

template<class T >
requires able<T>
static T * elc::defs::memory::lifetime_n::copy_assign_t::base_call ( T *  to,
const T *  from,
size_t  size 
)
inlinestaticnoexcept

在文件 all_defs.cpp10053 行定义.

10053 {
10054 if constexpr(trivial<T>)
10055 ::std::memcpy(to,add_const(from),size*sizeof(T));
10056 else
10057 while(size--)
10058 base_call(to[size],from[size]);
10059 return to;
10060 }
constexpr size_t size(::size_t v)
constexpr const T add_const(T a) noexcept
对值追加const
函数调用图:

◆ operator()()

template<class T >
requires able<T>
T & elc::defs::memory::lifetime_n::copy_assign_t::operator() ( T &  a,
const T &  b 
) const
inlinenoexcept

在文件 all_defs.cpp10072 行定义.

10072 {
10073 return base_call(a,b);
10074 }

◆ operator[]()

constexpr array_copy_assign_t elc::defs::memory::lifetime_n::copy_assign_t::operator[] ( size_t  a) const
inlineconstexprnoexcept

在文件 all_defs.cpp10103 行定义.

10103{return{a};}

类成员变量说明

◆ able

template<class T >
constexpr bool elc::defs::memory::lifetime_n::copy_assign_t::able =r_able<T>?true:(copy_construct_able<T>&&destruct.able<T>)
staticconstexpr

在文件 all_defs.cpp10034 行定义.

◆ nothrow

◆ r_able

◆ trivial

template<class T >
constexpr bool elc::defs::memory::lifetime_n::copy_assign_t::trivial
staticconstexpr

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