YSTest: ystdex::function_base< _tTraits, _tRet(_tParams...)> 模板类 参考

YSTest PreAlpha_b900_20201012 The YSLib Test Project

类 | Public 类型 | Public 成员函数 | Private 属性 | 友元 | 所有成员列表
ystdex::function_base< _tTraits, _tRet(_tParams...)> 模板类 参考

函数包装类模板特化。 更多...

`#include <function.hpp>`

类 ystdex::function_base< _tTraits, _tRet(_tParams...)> 继承关系图:
[图例]
ystdex::function_base< _tTraits, _tRet(_tParams...)> 的协作图:
[图例]

## 类

struct | invoker

## Public 类型

using | result_type = _tRet

## Public 成员函数

| function_base ()
template<class _tAlloc >
| function_base (std::allocator_arg_t, const _tAlloc &)
| function_base (nullptr_t)
template<class _tAlloc >
| function_base (std::allocator_arg_t, const _tAlloc &, nullptr_t, const _tAlloc &)
template<typename _fCallable , typename = exclude_self_t<function_base, _fCallable>, typename = enable_if_t<is_invocable_r<_tRet, _fCallable&, _tParams...>::value>>
| function_base (_fCallable f)
template<typename _fCallable , class _tAlloc , typename = exclude_self_t<function_base, _fCallable>, typename = enable_if_t<is_invocable_r<_tRet, _fCallable&, _tParams...>::value>>
| function_base (std::allocator_arg_t, const _tAlloc &a, _fCallable f)
| function_base (const function_base &)=default
template<class _tAlloc >
| function_base (std::allocator_arg_t, const _tAlloc &a, const function_base &x)
| function_base (function_base &&)=default
template<class _tAlloc >
| function_base (std::allocator_arg_t, const _tAlloc &a, function_base &&x)
function_base & | operator= (nullptr_t)
template<typename _fCallable , typename = exclude_self_t<function_base, _fCallable>, typename = enable_if_t<is_invocable_r<_tRet, _fCallable&, _tParams...>::value>>
function_base & | operator= (_fCallable &&f)
template<typename _fCallable >
function_base & | operator= (std::reference_wrapper< _fCallable > f)
function_base & | operator= (const function_base &)=default
function_base & | operator= (function_base &&f)=default
_tRet | operator() (_tParams... args) const
| operator bool () const
void | swap (function_base &f)
template<typename _type >
_type * | target ()
template<typename _type >
const _type * | target () const
const type_info & | target_type () const

## Private 属性

any | content {default_init}
_tRet(* | p_invoke )(const any &, _tParams...)

## 友元

bool | operator== (const function_base &f, nullptr_t)
void | swap (function_base &x, function_base &y)

## 详细描述

### template<class _tTraits, typename _tRet, typename... _tParams>
class ystdex::function_base< _tTraits, _tRet(_tParams...)>

函数包装类模板特化。

参见
  any

提供支持不同动态类型的调用包装。 和 ISO C++17 std::function 特化对应的接口相同，除以下特性： 允许不满足 CopyConstructible 的类型作为目标； 复制不满足 CopyConstructible 的目标时抛出异常； 模板参数中包含特化调用行为的特征； 调用没有目标的空对象的行为由特征决定，不一定抛出异常，行为可能未定义； 保证转移构造无异常抛出（参见 WG21 P0043R0 ）； 构造函数支持分配器（类似 WG21 P0302R1 移除的接口；另见 WG21 P0043R0 ）； 不提供 assign（可直接使用构造后转移赋值代替）。 分配器支持具有以下特性： 相等的分配器随复制和转移构造传播（同 WG21 P0043R0 ）； 没有使用分配器的初始化不保证等价使用默认分配器（和 any 设计的策略一致）； 没有 std::uses_allocator 特化（同 ISO C++17 和 WG21 P0043R0 ）。

在文件 function.hpp 第 642 行定义.

## 成员类型定义说明

## ◆ result_type

template<class _tTraits , typename _tRet , typename... _tParams>

using ystdex::function_base< _tTraits, _tRet(_tParams...)>::result_type = _tRet

自从
  build 848

在文件 function.hpp 第 648 行定义.

## 构造及析构函数说明

## ◆ function_base() [1/5]

template<class _tTraits , typename _tRet , typename... _tParams>

ystdex::function_base< _tTraits, _tRet(_tParams...)>::function_base | ( |  | ) |

inline

在文件 function.hpp 第 672 行定义.

## ◆ function_base() [2/5]

template<class _tTraits , typename _tRet , typename... _tParams>

ystdex::function_base< _tTraits, _tRet(_tParams...)>::function_base | ( | nullptr_t |  | ) |

inline

在文件 function.hpp 第 682 行定义.

## ◆ function_base() [3/5]

template<class _tTraits , typename _tRet , typename... _tParams>
template<typename _fCallable , typename = exclude_self_t<function_base, _fCallable>, typename = enable_if_t<is_invocable_r<_tRet, _fCallable&, _tParams...>::value>>

ystdex::function_base< _tTraits, _tRet(_tParams...)>::function_base | ( | _fCallable | f | ) |

inline

参见
  LWG 2781 。
  https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65760 。
  https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66284 。

在文件 function.hpp 第 700 行定义.

引用了 CHRLib::f(), ystdex::function_not_empty(), ystdex::invoke() , 以及 yunseq.

函数调用图:

## ◆ function_base() [4/5]

template<class _tTraits , typename _tRet , typename... _tParams>

ystdex::function_base< _tTraits, _tRet(_tParams...)>::function_base | ( | const function_base< _tTraits, _tRet(_tParams...)> & |  | ) |

default

## ◆ function_base() [5/5]

template<class _tTraits , typename _tRet , typename... _tParams>

ystdex::function_base< _tTraits, _tRet(_tParams...)>::function_base | ( | function_base< _tTraits, _tRet(_tParams...)> && |  | ) |

default

## 成员函数说明

## ◆ operator bool()

template<class _tTraits , typename _tRet , typename... _tParams>

ystdex::function_base< _tTraits, _tRet(_tParams...)>::operator bool | ( |  | ) | const

inlineexplicit

在文件 function.hpp 第 797 行定义.

## ◆ operator()()

template<class _tTraits , typename _tRet , typename... _tParams>

_tRet ystdex::function_base< _tTraits, _tRet(_tParams...)>::operator() | ( | _tParams... | args | ) | const

inline

前置条件
  策略指定不检查时断言： `bool(*this)` 。

异常

  std::bad_function_call | ：策略指定使用异常，且对象表示空函数。

在文件 function.hpp 第 791 行定义.

引用了 CHRLib::args , 以及 yforward.

## ◆ operator=() [1/5]

template<class _tTraits , typename _tRet , typename... _tParams>
template<typename _fCallable , typename = exclude_self_t<function_base, _fCallable>, typename = enable_if_t<is_invocable_r<_tRet, _fCallable&, _tParams...>::value>>

function_base& ystdex::function_base< _tTraits, _tRet(_tParams...)>::operator= | ( | _fCallable && | f | ) |

inline

自从
  build 849

在文件 function.hpp 第 760 行定义.

引用了 CHRLib::f().

函数调用图:

## ◆ operator=() [2/5]

template<class _tTraits , typename _tRet , typename... _tParams>

function_base& ystdex::function_base< _tTraits, _tRet(_tParams...)>::operator= | ( | const function_base< _tTraits, _tRet(_tParams...)> & |  | ) |

default

## ◆ operator=() [3/5]

template<class _tTraits , typename _tRet , typename... _tParams>

function_base& ystdex::function_base< _tTraits, _tRet(_tParams...)>::operator= | ( | function_base< _tTraits, _tRet(_tParams...)> && | f | ) |

default

## ◆ operator=() [4/5]

template<class _tTraits , typename _tRet , typename... _tParams>

function_base& ystdex::function_base< _tTraits, _tRet(_tParams...)>::operator= | ( | nullptr_t |  | ) |

inline

在文件 function.hpp 第 749 行定义.

## ◆ operator=() [5/5]

template<class _tTraits , typename _tRet , typename... _tParams>
template<typename _fCallable >

function_base& ystdex::function_base< _tTraits, _tRet(_tParams...)>::operator= | ( | std::reference_wrapper< _fCallable > | f | ) |

inline

在文件 function.hpp 第 768 行定义.

引用了 CHRLib::f().

函数调用图:

## ◆ swap()

template<class _tTraits , typename _tRet , typename... _tParams>

void ystdex::function_base< _tTraits, _tRet(_tParams...)>::swap | ( | function_base< _tTraits, _tRet(_tParams...)> & | f | ) |

inline

参见
  LWG 2062 。

在文件 function.hpp 第 804 行定义.

引用了 CHRLib::f() , 以及 ystdex::cpp2017::swap().

函数调用图:

## ◆ target() [1/2]

template<class _tTraits , typename _tRet , typename... _tParams>
template<typename _type >

_type* ystdex::function_base< _tTraits, _tRet(_tParams...)>::target | ( |  | ) |

inline

在文件 function.hpp 第 817 行定义.

## ◆ target() [2/2]

template<class _tTraits , typename _tRet , typename... _tParams>
template<typename _type >

const _type* ystdex::function_base< _tTraits, _tRet(_tParams...)>::target | ( |  | ) | const

inline

在文件 function.hpp 第 823 行定义.

## ◆ target_type()

template<class _tTraits , typename _tRet , typename... _tParams>

const type_info& ystdex::function_base< _tTraits, _tRet(_tParams...)>::target_type | ( |  | ) | const

inline

在文件 function.hpp 第 829 行定义.

## 友元及相关函数文档

## ◆ operator==

template<class _tTraits , typename _tRet , typename... _tParams>

bool operator== | ( | const function_base< _tTraits, _tRet(_tParams...)> & | f,
|  | nullptr_t |
| ) |  |

friend

在文件 function.hpp 第 781 行定义.

## ◆ swap

template<class _tTraits , typename _tRet , typename... _tParams>

void swap | ( | function_base< _tTraits, _tRet(_tParams...)> & | x,
|  | function_base< _tTraits, _tRet(_tParams...)> & | y
| ) |  |

friend

在文件 function.hpp 第 810 行定义.

## 类成员变量说明

## ◆ content

template<class _tTraits , typename _tRet , typename... _tParams>

any ystdex::function_base< _tTraits, _tRet(_tParams...)>::content {default_init}

private

在文件 function.hpp 第 665 行定义.

## ◆ p_invoke

template<class _tTraits , typename _tRet , typename... _tParams>

_tRet(* ystdex::function_base< _tTraits, _tRet(_tParams...)>::p_invoke) (const any &, _tParams...)

private

在文件 function.hpp 第 669 行定义.

该类的文档由以下文件生成:

- function.hpp