YSTest: variadic.hpp 文件参考

YSTest PreAlpha_b900_20201012 The YSLib Test Project

类 | 命名空间 | 宏定义 | 类型定义 | 函数 | 变量
variadic.hpp 文件参考
YBaseLib » YStandardExtend

C++ 变长参数相关操作。 更多...

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

浏览源代码.

## 类

struct | ystdex::vseq::defer< _gOp, _tSeq, typename >
| 延迟求值。 更多...
struct | ystdex::vseq::defer< _gOp, _tSeq, when< true > >
struct | ystdex::vseq::defer< _gOp, _gSeq< _types... >, when_valid< _gOp< _types... > > >
struct | ystdex::vseq::defer_i< _type, _gOp, _tSeq, typename >
struct | ystdex::vseq::defer_i< _tInt, _gOp, _gSeq< _tInt, _vSeq... >, when_valid< _gOp< _vSeq... > > >
struct | ystdex::vseq::vdefer< _gOp, _types >
| 可变参数类型列表延迟求值。 更多...
struct | ystdex::vseq::bind_back< _func, _tParams >
| 部分应用。 更多...
struct | ystdex::vseq::bind_front< _func, _tParams >
struct | ystdex::vseq::_a< _gOp >
| 构造具有 `apply` 成员的一阶元函数。 更多...
struct | ystdex::vseq::_q< _func >
| 引用：延迟求值变换。 更多...
struct | ystdex::vseq::ctor_of< _tSeq, typename >
| 取类型构造器：具有 apply 成员，结果的嵌套 type 类型为构造类型的元函数。 更多...
struct | ystdex::vseq::ctor_of< _tSeq, when< true > >
struct | ystdex::vseq::ctor_of< _gSeq< _types... >, when< true > >
struct | ystdex::vseq::params_of< _tSeq, typename >
| 取类型构造器参数。 更多...
struct | ystdex::vseq::params_of< _tSeq, when< true > >
struct | ystdex::vseq::params_of< _gSeq< _types... >, when< true > >
struct | ystdex::vseq::is_instance< class, typename >
| 判断是否可匹配类型实例。 更多...
struct | ystdex::vseq::is_instance< _tSeq, enable_if_t< is_same< _tSeq, _t< vdefer< instance_apply_t, _tSeq, params_of_t< _tSeq > > > >::value > >
struct | ystdex::vseq::clear< _tSeq, typename >
| 单位元：取空序列。 更多...
struct | ystdex::vseq::clear< _tSeq, when< true > >
struct | ystdex::vseq::concat< _tSeq1, _tSeq2, typename >
| 连接：合并序列。 更多...
struct | ystdex::vseq::concat< empty_base< _types1... >, empty_base< _types2... > >
struct | ystdex::vseq::concat< _tSeq1, _tSeq2, enable_for_instances< _tSeq1, _tSeq2 > >
struct | ystdex::vseq::fmap< _tCtor, _tSeq, typename >
| 函子映射：使用指定类型构造器和序列参数构造新的类型。 更多...
struct | ystdex::vseq::fmap< _tCtor, empty_base< _types... > >
struct | ystdex::vseq::fmap< _tCtor, _tSeq, enable_for_instances< _tSeq > >
struct | ystdex::vseq::front< _tSeq, typename >
| 取序列第一个元素。 更多...
struct | ystdex::vseq::front< empty_base< _tHead, _tTail... > >
struct | ystdex::vseq::front< _tSeq, enable_for_instances< _tSeq > >
struct | ystdex::vseq::pop_front< _tSeq, typename >
| 取序列第一个元素以外的元素的序列。 更多...
struct | ystdex::vseq::pop_front< empty_base< _tHead, _tTail... > >
struct | ystdex::vseq::pop_front< _tSeq, enable_for_instances< _tSeq > >
struct | ystdex::vseq::push_back< _tSeq, _tItem, typename >
| 取在序列末尾插入一个元素的序列。 更多...
struct | ystdex::vseq::push_back< empty_base< _types... >, _type >
struct | ystdex::vseq::push_back< _tSeq, _type, enable_for_instances< _tSeq > >
struct | ystdex::vseq::push_front< _tSeq, _tItem, typename >
| 取序列第一个元素以外的元素的序列。 更多...
struct | ystdex::vseq::push_front< empty_base< _types... >, _type >
struct | ystdex::vseq::push_front< _tSeq, _type, enable_for_instances< _tSeq > >
struct | ystdex::vseq::seq_size< _tSeq, typename >
| 取序列元素数。 更多...
struct | ystdex::vseq::seq_size< empty_base< _types... > >
struct | ystdex::vseq::seq_size< _tSeq, enable_for_instances< _tSeq > >
struct | ystdex::vseq::at< _tSeq, _vIdx, typename >
| 取指定位置的元素。 更多...
struct | ystdex::vseq::at< _tSeq, _vIdx, when< true > >
struct | ystdex::vseq::at< _tSeq, 0, when< true > >
struct | ystdex::vseq::back< _tSeq, typename >
| 取序列最后一个元素。 更多...
struct | ystdex::vseq::back< _tSeq, when< true > >
struct | ystdex::vseq::split_n< _vN, _tSeq, typename >
| 拆分序列前若干元素。 更多...
struct | ystdex::vseq::split_n< _vN, _tSeq, when< true > >
struct | ystdex::vseq::split_n< 0, _tSeq, when< true > >
struct | ystdex::vseq::split_n< 1, _tSeq, when< true > >
struct | ystdex::vseq::pop_back< _tSeq, typename >
| 取序列最后元素以外的元素的序列。 更多...
struct | ystdex::vseq::pop_back< _tSeq, when< true > >
struct | ystdex::vseq::erase< _tSeq, _vIdx, _vEnd, typename >
| 删除指定位置的元素。 更多...
struct | ystdex::vseq::erase< _tSeq, _vIdx, _vEnd, when< true > >
struct | ystdex::vseq::find< _tSeq, _type, typename >
| 查找元素。 更多...
struct | ystdex::vseq::details::find< _vN, _tSeq, _type >
struct | ystdex::vseq::details::find< 0, _tSeq, _type >
struct | ystdex::vseq::find< _tSeq, _type, when< true > >
struct | ystdex::vseq::deduplicate< _tSeq, typename >
| 取合并相同元素后的序列。 更多...
struct | ystdex::vseq::details::deduplicate< size_t, _tSeq >
struct | ystdex::vseq::details::deduplicate< 0, _tSeq >
struct | ystdex::vseq::details::deduplicate< 1, _tSeq >
struct | ystdex::vseq::deduplicate< _tSeq, when< true > >
struct | ystdex::vseq::join_n< _vN, _tSeq, typename >
| 重复连接序列元素。 更多...
struct | ystdex::vseq::join_n< _vN, _tSeq, when< true > >
struct | ystdex::vseq::join_n< 0, _tSeq >
struct | ystdex::vseq::join_n< 1, _tSeq >
struct | ystdex::vseq::project< _tSeq, _tIdxSeq, typename >
| 投影操作。 更多...
struct | ystdex::vseq::reverse< _tSeq, typename >
| 取逆序列。 更多...
struct | ystdex::vseq::reverse< _tSeq, when< true > >
struct | ystdex::vseq::unique< _tSeq, typename >
| 取合并相邻相同元素后的序列。 更多...
struct | ystdex::vseq::details::unique< _tSeq, _vN >
struct | ystdex::vseq::details::unique< _tSeq, 0 >
struct | ystdex::vseq::details::unique< _tSeq, 1 >
struct | ystdex::vseq::unique< _tSeq, when< true > >
struct | ystdex::vseq::fold< _fBinary, _tState, _tSeq, typename >
| 二元操作合并应用。 更多...
struct | ystdex::vseq::details::fold< _fBinary, _tState, _tSeq, _vSize >
struct | ystdex::vseq::details::fold< _fBinary, _tState, _tSeq, 0 >
struct | ystdex::vseq::details::fold< _fBinary, _tState, _tSeq, 1 >
struct | ystdex::vseq::fold< _fBinary, _tState, _tSeq, enable_for_instances< _tSeq > >
struct | ystdex::vseq::vec_add< _tSeq1, _tSeq2, typename >
| 序列作为向量的加法。 更多...
struct | ystdex::vseq::vec_subtract< _tSeq1, _tSeq2, typename >
| 序列作为向量的减法。 更多...

## 命名空间

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

## 宏定义

#define | YB_Impl_Variadic_SeqOp(_n, _tparams, _targs)
#define | YB_Impl_Variadic_SeqOpU(_n) YB_Impl_Variadic_SeqOp(_n, class _tSeq, _tSeq)
#define | YB_Impl_Variadic_SeqOpB(_n)
#define | YB_Impl_Variadic_SeqOpI(_n)
#define | YB_Impl_Variadic_SeqOpN(_n)

## 类型定义

template<class _func , typename... _tParams>
using | ystdex::vseq::apply = typename _func::template apply< _tParams... >
| 元函数应用。 更多...
template<class _func , typename... _tParams>
using | ystdex::vseq::apply_t = _t< apply< _func, _tParams... > >
template<template< typename... > class _gOp, class _tSeq , typename _tEnabler = void>
using | ystdex::vseq::defer_t = _t< defer< _gOp, _tSeq, _tEnabler > >
template<typename _type , template< _type... > class _gOp, class _tSeq , typename _tEnabler = void>
using | ystdex::vseq::defer_i_t = _t< defer_i< _type, _gOp, _tSeq, _tEnabler > >
template<class _func , class _tParamsList >
using | ystdex::vseq::defer_apply_t = _t< defer_t< _func::template apply, _tParamsList > >
template<class _tSeq , typename _tEnabler = void>
using | ystdex::vseq::ctor_of_t = _t< ctor_of< _tSeq, _tEnabler > >
template<class _tSeq , typename _tEnabler = void>
using | ystdex::vseq::params_of_t = _t< params_of< _tSeq, _tEnabler > >
template<class _tSeq , class _tParamsList >
using | ystdex::vseq::instance_apply_t = defer_apply_t< ctor_of_t< _tSeq >, _tParamsList >
| 使用构造器应用指定列表参数。 更多...
template<class... _tSeqs>
using | ystdex::vseq::same_instance = are_same< ctor_of_t< _tSeqs >... >
template<typename... _tSeqs>
using | ystdex::vseq::enable_for_instances = enable_when< and_< is_instance< _tSeqs >..., same_instance< _tSeqs... > >::value >
template<class _tSeq , typename _tEnabler = void>
using | ystdex::vseq::clear_t = _t< clear< _tSeq, _tEnabler > >
template<class _tSeq1 , class _tSeq2 , typename _tEnabler = void>
using | ystdex::vseq::concat_t = _t< concat< _tSeq1, _tSeq2, _tEnabler > >
template<class _tCtor , class _tSeq , typename _tEnabler = void>
using | ystdex::vseq::fmap_t = _t< fmap< _tCtor, _tSeq, _tEnabler > >
template<class _tSeq , typename _tEnabler = void>
using | ystdex::vseq::front_t = _t< front< _tSeq, _tEnabler > >
template<class _tSeq , typename _tEnabler = void>
using | ystdex::vseq::pop_front_t = _t< pop_front< _tSeq, _tEnabler > >
template<class _tSeq , typename _tItem , typename _tEnabler = void>
using | ystdex::vseq::push_back_t = _t< push_back< _tSeq, _tItem, _tEnabler > >
template<class _tSeq , typename _tItem , typename _tEnabler = void>
using | ystdex::vseq::push_front_t = _t< push_front< _tSeq, _tItem, _tEnabler > >
template<class _tSeq , typename _tEnabler = void>
using | ystdex::vseq::seq_size_t = _t< seq_size< _tSeq, _tEnabler > >
template<class _tSeq , size_t _vIdx, typename _tEnabler = void>
using | ystdex::vseq::at_t = _t< at< _tSeq, _vIdx, _tEnabler > >
template<class _tSeq , typename _tEnabler = void>
using | ystdex::vseq::back_t = _t< back< _tSeq, _tEnabler > >
template<size_t _vN, class _tSeq , typename _tEnabler = void>
using | ystdex::vseq::split_n_t = _t< split_n< _vN, _tSeq, _tEnabler > >
template<class _tSeq , typename _tEnabler = void>
using | ystdex::vseq::pop_back_t = _t< pop_back< _tSeq, _tEnabler > >
template<class _tSeq , size_t _vIdx, size_t _vEnd = _vIdx + 1, typename _tEnabler = void>
using | ystdex::vseq::erase_t = _t< erase< _tSeq, _vIdx, _vEnd, _tEnabler > >
template<class _tSeq , typename _type , typename _tEnabler = void>
using | ystdex::vseq::find_t = _t< find< _tSeq, _type, _tEnabler > >
template<class _tSeq , typename _tEnabler = void>
using | ystdex::vseq::deduplicate_t = _t< deduplicate< _tSeq, _tEnabler > >
template<size_t _vN, class _tSeq , typename _tEnabler = void>
using | ystdex::vseq::join_n_t = _t< join_n< _vN, _tSeq, _tEnabler > >
template<class _tSeq , class _tIdxSeq , typename _tEnabler = void>
using | ystdex::vseq::project_t = _t< project< _tSeq, _tIdxSeq, _tEnabler > >
template<class _tSeq , typename _tEnabler = void>
using | ystdex::vseq::reverse_t = _t< reverse< _tSeq, _tEnabler > >
template<class _tSeq , typename _tEnabler = void>
using | ystdex::vseq::unique_t = _t< unique< _tSeq, _tEnabler > >
template<class _fBinary , typename _tState , class _tSeq , typename _tEnabler = void>
using | ystdex::vseq::fold_t = _t< fold< _fBinary, _tState, _tSeq, _tEnabler > >
template<class _tSeq1 , class _tSeq2 , typename _tEnabler = void>
using | ystdex::vseq::vec_add_t = _t< vec_add< _tSeq1, _tSeq2, _tEnabler > >
template<class _tSeq1 , class _tSeq2 , typename _tEnabler = void>
using | ystdex::vseq::vec_subtract_t = _t< vec_subtract< _tSeq1, _tSeq2, _tEnabler > >

## 函数

template<typename _type , typename... _types>
empty_base< _types... > | ystdex::fseq::pop_front (empty_base< _type, _types... >)
template<typename _func , typename _tState >
_tState | ystdex::fseq::fold (_func, _tState s, empty_base<>)
template<typename _func , typename _tState , typename _type , typename... _types>
auto | ystdex::fseq::fold (_func f, _tState s, empty_base< _type, _types... > xs) -> decltype(fold(f, f(s, front(xs)), pop_front(xs)))
template<typename _func , typename _tState >
_tState | ystdex::fseq::vfold (_func, _tState s)
template<typename _func , typename _tState , typename _type , typename... _types>
_tState | ystdex::fseq::vfold (_func f, _tState s, _type x, _types... xs)

## 变量

template<typename _type , typename... _types>
identity< _type > | ystdex::fseq::front (empty_base< _type, _types... >)

## 详细描述

C++ 变长参数相关操作。

版本
  r1403

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

自从
  build 412

创建时间:
  2013-06-06 11:38:15 +0800

修改时间:
  2019-01-18 19:14 +0800

文本编码:
  UTF-8

模块名称:
  YStandardEx::Variadic

在文件 variadic.hpp 中定义.

## 宏定义说明

## ◆ YB_Impl_Variadic_SeqOp

#define YB_Impl_Variadic_SeqOp | ( |  | _n,
|  |  | _tparams,
|  |  | _targs
| ) |  |

值:
template<_tparams, typename = void> \
struct _n : _n<_targs, when<true>> \
{}; \
\
template<_tparams, typename _tEnabler = void> \
using _n##_t = _t<_n<_targs, _tEnabler>>;

在文件 variadic.hpp 第 142 行定义.

## ◆ YB_Impl_Variadic_SeqOpB

#define YB_Impl_Variadic_SeqOpB | ( |  | _n | ) |

值:
YB_Impl_Variadic_SeqOp(_n, class _tSeq1 \
YPP_Comma class _tSeq2, _tSeq1 YPP_Comma _tSeq2)

在文件 variadic.hpp 第 151 行定义.

## ◆ YB_Impl_Variadic_SeqOpI

#define YB_Impl_Variadic_SeqOpI | ( |  | _n | ) |

值:
YB_Impl_Variadic_SeqOp(_n, class _tSeq \
YPP_Comma size_t _vIdx, _tSeq YPP_Comma _vIdx)

在文件 variadic.hpp 第 153 行定义.

## ◆ YB_Impl_Variadic_SeqOpN

#define YB_Impl_Variadic_SeqOpN | ( |  | _n | ) |

值:
YB_Impl_Variadic_SeqOp(_n, size_t _vN \
YPP_Comma class _tSeq, _vN YPP_Comma _tSeq)

在文件 variadic.hpp 第 155 行定义.

## ◆ YB_Impl_Variadic_SeqOpU

#define YB_Impl_Variadic_SeqOpU | ( |  | _n | ) | YB_Impl_Variadic_SeqOp(_n, class _tSeq, _tSeq)

在文件 variadic.hpp 第 149 行定义.

YPP_Comma
#define YPP_Comma
替换为逗号的预处理记号。
Definition: ydef.h:370
ystdex::_t
typename _type::type _t
嵌套类型别名。
Definition: meta.hpp:45
YB_Impl_Variadic_SeqOp
#define YB_Impl_Variadic_SeqOp(_n, _tparams, _targs)
Definition: variadic.hpp:141