YSTest: function.hpp 文件参考

YSTest PreAlpha_b900_20201012 The YSLib Test Project

类 | 命名空间 | 宏定义 | 类型定义 | 枚举 | 函数
function.hpp 文件参考
YBaseLib » YStandardExtend

函数基本操作和调用包装对象。 更多...

`#include "any.h"`
`#include "apply.hpp"`
`#include "operators.hpp"`
function.hpp 的引用(Include)关系图:
此图展示该文件直接或间接的被哪些文件引用了:

浏览源代码.

## 类

struct | ystdex::details::elements_convertible< class, class, class >
struct | ystdex::details::elements_convertible< _type1, _type2, index_sequence<> >
struct | ystdex::details::elements_convertible< empty_base< _types1... >, empty_base< _types2... >, index_sequence< _vHead, _vSeq... > >
struct | ystdex::details::mk_plist< typename >
struct | ystdex::details::mk_plist< _tRet(_tParams... YPP_Args) >
struct | ystdex::details::mk_plist< _tRet(*)(_tParams... YPP_Args) >
struct | ystdex::details::mk_plist< _tRet(_tParams...,...) >
struct | ystdex::details::mk_plist< _tRet(*)(_tParams...,...) >
struct | ystdex::details::mk_plist< std::function< _fSig > >
struct | ystdex::details::ret_of< typename >
struct | ystdex::details::ret_of< _tRet(_tParams... YPP_Args) >
struct | ystdex::details::ret_of< _tRet(*)(_tParams... YPP_Args) >
struct | ystdex::details::ret_of< _tRet(_tParams...,...) >
struct | ystdex::details::ret_of< _tRet(*)(_tParams...,...) >
struct | ystdex::details::ret_of< _tRet(_tClass::*)(_tParams... YPP_Args) >
struct | ystdex::details::ret_of< _tRet(_tClass::*)(_tParams...,...) >
struct | ystdex::details::ret_of< std::function< _fSig > >
struct | ystdex::is_covariant< _tFrom, _tTo >
| 判断指定类型之间是否协变。 更多...
struct | ystdex::is_covariant< _tFrom(_tFromParams...), _tTo(_tToParams...)>
struct | ystdex::is_covariant< empty_base< _tFroms... >, empty_base< _tTos... > >
struct | ystdex::is_covariant< std::tuple< _tFroms... >, std::tuple< _tTos... > >
struct | ystdex::is_covariant< std::function< _tFrom(_tFromParams...)>, std::function< _tTo(_tToParams...)> >
struct | ystdex::is_contravariant< _tFrom, _tTo >
| 判断指定类型之间是否逆变。 更多...
struct | ystdex::is_contravariant< _tResFrom(_tFromParams...), _tResTo(_tToParams...)>
struct | ystdex::is_contravariant< empty_base< _tFroms... >, empty_base< _tTos... > >
struct | ystdex::is_contravariant< std::tuple< _tFroms... >, std::tuple< _tTos... > >
struct | ystdex::is_contravariant< std::function< _tResFrom(_tFromParams...)>, std::function< _tResTo(_tToParams...)> >
struct | ystdex::variadic_param< _vN >
| 变长参数操作模板。 更多...
struct | ystdex::variadic_param< 0U >
struct | ystdex::make_parameter_list< _fCallable >
| 取参数列表。 更多...
struct | ystdex::return_of< _fCallable >
| 取返回类型。 更多...
struct | ystdex::parameter_of< _vIdx, _fCallable >
| 取指定索引的参数类型。 更多...
struct | ystdex::paramlist_size< _fCallable >
| 取参数列表大小。 更多...
struct | ystdex::make_function_type< typename, class >
| 取指定返回类型和元组指定参数类型的函数类型。 更多...
struct | ystdex::make_function_type< _tRet, empty_base< _tParams... > >
struct | ystdex::make_function_type< _tRet, std::tuple< _tParams... > >
struct | ystdex::call_projection< std::function< _tRet(_tParams...)>, index_sequence< _vSeq... > >
struct | ystdex::function_traits< typename, empty_function_policy >
| 函数包装特征。 更多...
struct | ystdex::function_traits< _tRet(_tParams...), empty_function_policy::no_check >
struct | ystdex::function_traits< _tRet(_tParams...), empty_function_policy::no_effect >
struct | ystdex::function_traits< _tRet(_tParams...), empty_function_policy::throwing >
class | ystdex::function_base< class, typename >
| 函数包装类模板。 更多...
class | ystdex::function_base< _tTraits, _tRet(_tParams...)>
| 函数包装类模板特化。 更多...
struct | ystdex::function_base< _tTraits, _tRet(_tParams...)>::invoker< _tHandler >
struct | ystdex::make_parameter_list< function_base< _tTraits, _fSig > >
struct | ystdex::return_of< function_base< _tTraits, _fSig > >
struct | ystdex::is_covariant< function_base< _tTraits, _tFrom(_tFromParams...)>, function_base< _tTraits, _tTo(_tToParams...)> >
struct | ystdex::is_contravariant< function_base< _tTraits, _tResFrom(_tFromParams...)>, function_base< _tTraits, _tResTo(_tToParams...)> >
struct | ystdex::make_function_type< _tRet, function_base< _tTraits, _tUnused(_tParams...)> >
struct | ystdex::call_projection< function_base< _tTraits, _tRet(_tParams...)>, index_sequence< _vSeq... > >

## 命名空间

| ystdex
| `<memory>` 特性测试宏。
| ystdex::details

## 宏定义

#define | YB_Impl_Functional_ptuple_spec(_exp, _p, _e)
#define | YB_Impl_Functional_ret_spec(_exp, _p, _e)
#define | YB_Impl_Functional_ret_spec_f(_e)
#define | YB_Impl_Functional_ret_spec_mf(_e) YB_Impl_Functional_ret_spec(class _tClass YPP_Comma, (_tClass::*), _e)

## 类型定义

template<typename _fCallable >
using | ystdex::make_parameter_list_t = _t< make_parameter_list< _fCallable > >
template<typename _fCallable >
using | ystdex::return_of_t = _t< return_of< _fCallable > >
template<size_t _vIdx, typename _fCallable >
using | ystdex::parameter_of_t = _t< parameter_of< _vIdx, _fCallable > >
template<typename _tRet , class _tTuple >
using | ystdex::make_function_type_t = _t< make_function_type< _tRet, _tTuple > >
template<typename _fCallable >
using | ystdex::as_function_type_t = make_function_type_t< return_of_t< _fCallable >, make_parameter_list_t< _fCallable > >
| 取内建函数类型。 更多...
template<template< typename... > class _gOp, typename _func , typename... _tParams>
using | ystdex::enable_fallback_t = enable_if_t<!is_detected< _gOp, _tParams &&... >::value, decltype(std::declval< _func >()(std::declval< _tParams >()...))>
| 启用备用重载。 更多...
template<typename _type , size_t _vN = 1, typename _tParam = _type>
using | ystdex::id_func_t = make_function_type_t< _type, vseq::join_n_t< _vN, empty_base< _tParam > >>
| 取指定维数和指定参数类型的多元映射扩展恒等函数类型。 更多...
template<typename _type , size_t _vN = 1>
using | ystdex::id_func_clr_t = id_func_t< _type, _vN, const _type & >
| 取指定维数和 const 左值引用参数类型的多元映射扩展恒等函数类型。 更多...
template<typename _type , size_t _vN = 1>
using | ystdex::id_func_rr_t = id_func_t< _type, _vN, _type && >
| 取指定维数和 const 右值引用参数类型的多元映射扩展恒等函数类型。 更多...
template<typename _fSig >
using | ystdex::unchecked_function = function_base< function_traits< _fSig, empty_function_policy::no_check >, _fSig >
template<typename _fSig >
using | ystdex::optional_function = function_base< function_traits< _fSig, empty_function_policy::no_effect >, _fSig >
template<typename _fSig >
using | ystdex::function = function_base< function_traits< _fSig, empty_function_policy::throwing >, _fSig >
| 函数包装类模板。 更多...

## 枚举

enum | ystdex::empty_function_policy { ystdex::empty_function_policy::no_check, ystdex::empty_function_policy::no_effect, ystdex::empty_function_policy::throwing }
| 空函数策略。 更多...

## 函数

template<typename... _tParams>
size_t | ystdex::sizeof_params (_tParams &&...)
| 统计函数参数列表中的参数个数。 更多...
template<size_t _vN, typename... _tParams>
auto | ystdex::varg (_tParams &&... args) -> decltype(variadic_param< _vN >::get(std::forward< decltype(args)>(args)...))
| 取指定位置的变长参数。 更多...
template<typename _func >
void | ystdex::chain_apply (_func &&f)
| 顺序链式调用。 更多...
template<typename _func , typename _type , typename... _tParams>
void | ystdex::chain_apply (_func &&f, _type &&arg, _tParams &&... args)
template<typename _func >
void | ystdex::seq_apply (_func &&)
| 顺序递归调用。 更多...
template<typename _func , typename _type , typename... _tParams>
void | ystdex::seq_apply (_func &&f, _type &&arg, _tParams &&... args)
template<typename _func , typename... _tParams>
void | ystdex::unseq_apply (_func &&f, _tParams &&... args)
| 无序调用。 更多...
template<typename _fSig >
static bool | ystdex::function_not_empty (const std::function< _fSig > &f)
| 判断是否符合 std::function 实现初始化为空函数对象的条件。 更多...
template<class _tTraits , typename _fSig >
static bool | ystdex::function_not_empty (const function_base< _tTraits, _fSig > &f)
template<typename _func , typename = enable_if_t<is_function<_func>::value>>
static bool | ystdex::function_not_empty (_func *p)
template<typename _tRet , class _tClass >
static bool | ystdex::function_not_empty (_tRet _tClass::*p)
template<typename _type >
static bool | ystdex::function_not_empty (const _type &)

## 详细描述

函数基本操作和调用包装对象。

版本
  r4897

作者
  FrankHB frank.nosp@m.hb19.nosp@m.89@gm.nosp@m.ail..nosp@m.com

自从
  build 847

创建时间:
  2018-12-13 01:24:06 +0800

修改时间:
  2020-04-03 00:28 +0800

文本编码:
  UTF-8

模块名称:
  YStandardEx::Function

在文件 function.hpp 中定义.

## 宏定义说明

## ◆ YB_Impl_Functional_ptuple_spec

#define YB_Impl_Functional_ptuple_spec | ( |  | _exp,
|  |  | _p,
|  |  | _e
| ) |  |

值:
template<typename _tRet, _exp typename... _tParams ynoexcept_param(ne)> \
struct mk_plist<_tRet _p (_tParams... YPP_Args _e) ynoexcept_qual(ne)> \
{ \
using type = empty_base<_tParams...>; \
};

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

## ◆ YB_Impl_Functional_ret_spec

#define YB_Impl_Functional_ret_spec | ( |  | _exp,
|  |  | _p,
|  |  | _e
| ) |  |

值:
template<typename _tRet, _exp typename... _tParams ynoexcept_param(ne)> \
struct ret_of<_tRet _p (_tParams... YPP_Args _e) ynoexcept_qual(ne)> \
{ \
using type = _tRet; \
};

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

## ◆ YB_Impl_Functional_ret_spec_f

#define YB_Impl_Functional_ret_spec_f | ( |  | _e | ) |

值:
YB_Impl_Functional_ret_spec(, , _e) \
YB_Impl_Functional_ret_spec(, (*), _e)

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

## ◆ YB_Impl_Functional_ret_spec_mf

#define YB_Impl_Functional_ret_spec_mf | ( |  | _e | ) | YB_Impl_Functional_ret_spec(class _tClass YPP_Comma, (_tClass::*), _e)

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

YPP_Args
#define YPP_Args(...)
替换列表。
Definition: ydef.h:361
YB_Impl_Functional_ret_spec
#define YB_Impl_Functional_ret_spec(_exp, _p, _e)
Definition: function.hpp:106
ynoexcept_qual
#define ynoexcept_qual(...)
影响函数类型的 noexcept 限定符表达式。
Definition: ydef.h:1173
ynoexcept_param
#define ynoexcept_param(_n)
影响函数类型的 noexcept 限定符参数。
Definition: ydef.h:1172
YSLib::_tParams
YB_ATTR_nodiscard YB_PURE typename _tParams
Definition: ValueNode.h:1294