ELC in dev
ELC-lang
载入中...
搜索中...
未找到
elc::defs::container::function_n::func_data_t< T, Ret_t(Args_t...)> 模板结构体 参考final
类 elc::defs::container::function_n::func_data_t< T, Ret_t(Args_t...)> 继承关系图:
[图例]
elc::defs::container::function_n::func_data_t< T, Ret_t(Args_t...)> 的协作图:
[图例]

Public 类型

typedef base_func_data_t< Ret_t(Args_t...)> base_t
 
typedef func_data_t< T, Ret_t(Args_t...)> this_t
 
typedef function_data_wrapper_t< T, Ret_t(Args_t...)> data_t
 
typedef base_t::ptr_t ptr_t
 
typedef base_t::func_ptr_t func_ptr_t
 
- Public 类型 继承自 elc::defs::container::function_n::base_func_data_t< Ret_t(Args_t...)>
typedef base_func_data_t< Ret_t(Args_t...)> this_t
 
typedef comn_ptr_t< this_tptr_t
 
typedef Ret_t(* func_ptr_t) (Args_t...)
 

Public 成员函数

bool is_unique () const noexcept
 
virtual ~func_data_t () override=default
 
virtual base_type_info_t get_type_info () const noexcept override final
 
virtual const voidget_data_begin () const noexcept override final
 
virtual void throw_self_ptr () const override final
 
virtual void throw_self_ptr () override final
 
virtual bool equal_with (const void *a) const noexcept(equal.able< T >?equal.nothrow< T >:true) override final
 
virtual Ret_t call (Args_t...args) noexcept(invoke< T >.with_return_type< Ret_t >.nothrow< Args_t... >) override final
 
virtual func_ptr_t get_func_ptr () const noexcept override final
 
- Public 成员函数 继承自 elc::defs::container::function_n::base_func_data_t< Ret_t(Args_t...)>
virtual ~base_func_data_t ()=default
 
bool operator== (const this_t &a) const
 
template<typename T >
bool operator== (const T &a) const
 

详细描述

template<class T, class Ret_t, class... Args_t>
struct elc::defs::container::function_n::func_data_t< T, Ret_t(Args_t...)>

在文件 all_defs.cpp24169 行定义.

成员类型定义说明

◆ base_t

template<class T , class Ret_t , class... Args_t>
typedef base_func_data_t<Ret_t(Args_t...)> elc::defs::container::function_n::func_data_t< T, Ret_t(Args_t...)>::base_t

在文件 all_defs.cpp24173 行定义.

◆ data_t

template<class T , class Ret_t , class... Args_t>
typedef function_data_wrapper_t<T,Ret_t(Args_t...)> elc::defs::container::function_n::func_data_t< T, Ret_t(Args_t...)>::data_t

在文件 all_defs.cpp24175 行定义.

◆ func_ptr_t

template<class T , class Ret_t , class... Args_t>
typedef base_t::func_ptr_t elc::defs::container::function_n::func_data_t< T, Ret_t(Args_t...)>::func_ptr_t

在文件 all_defs.cpp24177 行定义.

◆ ptr_t

template<class T , class Ret_t , class... Args_t>
typedef base_t::ptr_t elc::defs::container::function_n::func_data_t< T, Ret_t(Args_t...)>::ptr_t

在文件 all_defs.cpp24176 行定义.

◆ this_t

template<class T , class Ret_t , class... Args_t>
typedef func_data_t<T,Ret_t(Args_t...)> elc::defs::container::function_n::func_data_t< T, Ret_t(Args_t...)>::this_t

在文件 all_defs.cpp24174 行定义.

构造及析构函数说明

◆ ~func_data_t()

template<class T , class Ret_t , class... Args_t>
virtual elc::defs::container::function_n::func_data_t< T, Ret_t(Args_t...)>::~func_data_t ( )
overridevirtualdefault

成员函数说明

◆ call()

template<class T , class Ret_t , class... Args_t>
virtual Ret_t elc::defs::container::function_n::func_data_t< T, Ret_t(Args_t...)>::call ( Args_t...  args)
inlinefinaloverridevirtualnoexcept

实现了 elc::defs::container::function_n::base_func_data_t< Ret_t(Args_t...)>.

在文件 all_defs.cpp24193 行定义.

24193 {
24194 return data_t::operator()(forward<Args_t>(args)...);
24195 }
constexpr T down_cast(U a) noexcept
向下转型至

◆ equal_with()

template<class T , class Ret_t , class... Args_t>
virtual bool elc::defs::container::function_n::func_data_t< T, Ret_t(Args_t...)>::equal_with ( const void a) const
inlinefinaloverridevirtualnoexcept

实现了 elc::defs::container::function_n::base_func_data_t< Ret_t(Args_t...)>.

在文件 all_defs.cpp24187 行定义.

24187 :true)override final{
24188 if constexpr(equal.able<T>)
24189 return data_t::get_data()==*remove_const(reinterpret_cast<const T*>(a));
24190 else
24191 return false;
24192 }
constexpr struct elc::defs::base::equal_t equal
constexpr T & remove_const(const T &a) noexcept
对引用移除const
static constexpr bool able
函数调用图:

◆ get_data_begin()

template<class T , class Ret_t , class... Args_t>
virtual const void * elc::defs::container::function_n::func_data_t< T, Ret_t(Args_t...)>::get_data_begin ( ) const
inlinefinaloverridevirtualnoexcept

实现了 elc::defs::container::function_n::base_func_data_t< Ret_t(Args_t...)>.

在文件 all_defs.cpp24184 行定义.

24184{return addressof(data_t::get_data());}

◆ get_func_ptr()

template<class T , class Ret_t , class... Args_t>
virtual func_ptr_t elc::defs::container::function_n::func_data_t< T, Ret_t(Args_t...)>::get_func_ptr ( ) const
inlinefinaloverridevirtualnoexcept

重载 elc::defs::container::function_n::base_func_data_t< Ret_t(Args_t...)> .

在文件 all_defs.cpp24198 行定义.

24198 {
24199 //if constexpr(type_info<const T>.can_convert_to<func_ptr_t>)
24200 //workaround of https://developercommunity.visualstudio.com/t/name-lookup-problem-after-update-1740/10189035
24201 if constexpr(::std::is_convertible_v<const T,func_ptr_t>)
24202 return static_cast<func_ptr_t>(data_t::get_data());
24203 else
24204 return nullptr;
24205 }

◆ get_type_info()

template<class T , class Ret_t , class... Args_t>
virtual base_type_info_t elc::defs::container::function_n::func_data_t< T, Ret_t(Args_t...)>::get_type_info ( ) const
inlinefinaloverridevirtualnoexcept

◆ is_unique()

template<class T , class Ret_t , class... Args_t>
bool elc::defs::container::function_n::func_data_t< T, Ret_t(Args_t...)>::is_unique ( ) const
inlinenoexcept

在文件 all_defs.cpp24179 行定义.

24179{return get_ref_num((base_t*)this)==1;}
link_num_t get_ref_num(const T *a) noexcept

◆ throw_self_ptr() [1/2]

template<class T , class Ret_t , class... Args_t>
virtual void elc::defs::container::function_n::func_data_t< T, Ret_t(Args_t...)>::throw_self_ptr ( ) const
inlinefinaloverridevirtual

实现了 elc::defs::container::function_n::base_func_data_t< Ret_t(Args_t...)>.

在文件 all_defs.cpp24185 行定义.

24185{throw addressof(data_t::get_data());}

◆ throw_self_ptr() [2/2]

template<class T , class Ret_t , class... Args_t>
virtual void elc::defs::container::function_n::func_data_t< T, Ret_t(Args_t...)>::throw_self_ptr ( )
inlinefinaloverridevirtual

实现了 elc::defs::container::function_n::base_func_data_t< Ret_t(Args_t...)>.

在文件 all_defs.cpp24186 行定义.

24186{throw addressof(data_t::get_data());}

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