YSTest: ystdex 命名空间参考

YSTest PreAlpha_b400_20130424 The YSLib Test Project

- 首页
- 相关页面
- 模块
- 命名空间
- 类
- 文件

- 命名空间列表
- 命名空间成员

全部 类 命名空间 文件 函数 变量 类型定义 枚举 枚举值 友元 宏定义 组 页
命名空间 | 类 | 类型定义 | 函数 | 变量
ystdex 命名空间参考

## 命名空间

namespace | any_ops
namespace | details
namespace | examiners
| 操作检测命名空间。
namespace | iterator_transformation
| 迭代转换操作。
namespace | operators

## 类

class | nullptr_t
| 空指针类。 更多...
struct | empty_base
| 空基类模板。 更多...
class | offsetof_check
| 成员偏移计算静态类型检查。 更多...
union | non_aggregate_pod
union | pod_storage
class | void_ref
| 任意对象引用类型。 更多...
class | any
| 基于类型擦除的动态泛型对象。 更多...
class | bad_any_cast
| 动态泛型转换失败异常。 更多...
struct | pseudo_output
| 伪输出对象。 更多...
class | any_input_iterator
| 动态泛型输入迭代器。 更多...
class | any_forward_iterator
| 动态泛型前向迭代器。 更多...
class | any_bidirectional_iterator
| 动态泛型双向迭代器。 更多...
class | container_inserter
| 容器插入函数对象。 更多...
class | ifile_iterator
| 基于 ISO C 标准库的流只读迭代器。 更多...
struct | make_parameter_tuple< _tRet(_tParams...)>
struct | make_parameter_tuple< _tRet(*)(_tParams...)>
struct | make_parameter_tuple< _tRet(&)(_tParams...)>
struct | make_parameter_tuple< _tRet(_tClass::*)(_tParams...)>
struct | make_parameter_tuple< _tRet(_tClass::*)(_tParams...) const >
struct | make_parameter_tuple< _tRet(_tClass::*)(_tParams...) volatile >
struct | make_parameter_tuple< _tRet(_tClass::*)(_tParams...) const volatile >
struct | return_of< _tResult(_tParams...)>
struct | return_of< _tResult(*)(_tParams...)>
struct | return_of< _tResult(&)(_tParams...)>
struct | return_of< _tResult(_tClass::*)(_tParams...)>
struct | return_of< _tResult(_tClass::*)(_tParams...) const >
struct | return_of< _tResult(_tClass::*)(_tParams...) volatile >
struct | return_of< _tResult(_tClass::*)(_tParams...) const volatile >
struct | parameter_of
| 取指定索引的参数类型。 更多...
struct | paramlist_size
| 取参数列表大小。 更多...
struct | wrapped_traits
| 取 std::reference_wrapper 实例特征。 更多...
struct | wrapped_traits< std::reference_wrapper< _tWrapped > >
struct | ref_eq
| 引用相等关系仿函数。 更多...
struct | xcrease_t
| 编译期选择自增/自减运算仿函数。 更多...
struct | xcrease_t< false, _tScalar >
struct | delta_assignment
| 编译期选择加法/减法复合赋值运算仿函数。 更多...
struct | delta_assignment< false, _tScalar1, _tScalar2 >
struct | deref_op
| 引用仿函数。 更多...
struct | const_deref_op
| const 引用仿函数。 更多...
struct | deref_comp
| 间接访问比较仿函数。 更多...
struct | deref_str_comp
| 间接访问字符串比较仿函数。 更多...
class | pointer_iterator
| 指针迭代器。 更多...
struct | pointer_classify
| 指针包装为类类型迭代器。 更多...
struct | pointer_classify< _type * >
class | pseudo_iterator
| 伪迭代器。 更多...
class | transformed_iterator
| 转换迭代器。 更多...
struct | indirect_tag
class | pair_iterator
| 成对迭代器。 更多...
class | subscriptive_iterator
| 成员下标迭代器。 更多...
struct | fixed_multiplicative
| 定点数乘除法中间类型。 更多...
struct | fixed_multiplicative< std::int64_t >
struct | fixed_multiplicative< std::uint64_t >
class | fixed_point
| 通用定点数。 更多...
struct | string_traits
| 字符串特征。 更多...
struct | is_returnable
| 判断指定类型是否可作为返回值类型。 更多...
struct | is_decayable
| 判断是否可被退化。 更多...
struct | is_class_pointer
| 判断指定类型是否是指向类类型对象的指针。 更多...
struct | is_lvalue_class_reference
| 判断指定类型是否是左值类类型引用。 更多...
struct | is_rvalue_class_reference
| 判断指定类型是否是右值类类型引用。 更多...
struct | is_pod_struct
| 判断指定类型是否是 POD struct 。 更多...
struct | is_pod_union
| 判断指定类型是否是 POD union 。 更多...
struct | has_subscription
| 判断是否存在合式的结果为非 void 类型的 [] 操作符接受指定类型的表达式。 更多...
struct | has_equality_operator
| 判断是否存在合式的结果可转换为 bool 类型的 == 操作符接受指定类型的表达式。 更多...
struct | has_nonempty_virtual_base
| 判断指定类型是否有非空虚基类。 更多...
struct | has_common_nonempty_virtual_base
| 判断指定的两个类类型是否有非空虚基类。 更多...
struct | identity
| 恒等元函数。 更多...
struct | remove_rcv
| 移除可能被 cv-qualifier 修饰的引用类型。 更多...
struct | remove_rp
| 移除指针和引用类型。 更多...
struct | remove_rpcv
| 移除可能被 cv-qualifier 修饰的引用和指针类型。 更多...
struct | array_decay
| 数组类型退化。 更多...
struct | qualified_decay
| 保持修饰符的类型退化。 更多...
struct | array_ref_decay
| 数组及数组引用类型退化。 更多...
struct | array_ref_decay< _type & >
struct | array_ref_decay< _type && >
struct | integer_width
| 取指定整数类型的位宽度。 更多...
struct | make_signed_c
| 取指定整数类型和条件表达式对应的有符号或无符号整数类型。 更多...
struct | make_signed_c< _type, false >
struct | make_fixed_width_int
| 取按指定宽度的整数类型。 更多...
struct | make_fixed_width_int< 8U >
struct | make_fixed_width_int< 16U >
struct | make_fixed_width_int< 32U >
struct | make_fixed_width_int< 64U >
struct | n_tag
| 标记。 更多...
struct | n_tag< 0 >
struct | variadic_sequence
| 变量参数标记。 更多...
struct | make_successor< variadic_sequence< _vSeq...> >
struct | make_natural_sequence
| 取自然数变量标记序列。 更多...
struct | make_natural_sequence< 0 >
class | noncopyable
class | nonmovable
class | nifty_counter
| 使用引用计数的静态初始化管理器。 更多...
class | call_once_init
| 使用 call_once 的静态初始化管理器。 更多...

## 类型定义

typedef unsigned char | byte
| 字节类型。
typedef int | errno_t
typedef any_forward_iterator < void_ref, ptrdiff_t, void *, void_ref > | forward_monomorphic_iterator
typedef any_bidirectional_iterator < void_ref, ptrdiff_t, void *, void_ref > | bidirectional_monomorphic_iterator
typedef n_tag< 0 > | first_tag
| 第一分量标记。
typedef n_tag< 1 > | second_tag
| 第二分量标记。
typedef char * | path_t
| 路径类型定义。
typedef const char * | const_path_t

## 函数

template<typename _type , typename... _tParams>
auto | unsequenced (_type &&arg, _tParams &&...) -> decltype(std::forward< decltype(arg)>(arg))
| 无序列依赖表达式组求值实现。
template<class _type >
_type * | pod_fill (_type *first, _type *last, const _type &value)
template<class _type >
_type * | pod_copy_n (const _type *first, size_t n, _type *result)
template<class _type >
_type * | pod_copy (const _type *first, const _type *last, _type *result)
template<class _type >
_type * | pod_move_n (const _type *first, size_t n, _type *result)
template<class _type >
_type * | pod_move (const _type *first, const _type *last, _type *result)
template<typename _tForward >
_tForward | stable_range_unique (_tForward first, _tForward last)
| 去除迭代器指定的范围中的重复元素，且不改变元素之间的相对顺序。
template<typename _type , typename _tDifference , typename _tPointer , typename _tReference >
bool | operator== (const any_forward_iterator< _type, _tDifference, _tPointer, _tReference > &x, const any_forward_iterator< _type, _tDifference, _tPointer, _tReference > &y)
template<typename _type , typename _tDifference , typename _tPointer , typename _tReference >
bool | operator!= (const any_forward_iterator< _type, _tDifference, _tPointer, _tReference > &x, const any_forward_iterator< _type, _tDifference, _tPointer, _tReference > &y)
template<typename _type , typename _tDifference , typename _tPointer , typename _tReference >
bool | is_undereferenceable (const any_forward_iterator< _type, _tDifference, _tPointer, _tReference > &i)
template<typename _type , typename _tDifference , typename _tPointer , typename _tReference >
bool | operator== (const any_bidirectional_iterator< _type, _tDifference, _tPointer, _tReference > &x, const any_bidirectional_iterator< _type, _tDifference, _tPointer, _tReference > &y)
template<typename _type , typename _tDifference , typename _tPointer , typename _tReference >
bool | operator!= (const any_bidirectional_iterator< _type, _tDifference, _tPointer, _tReference > &x, const any_bidirectional_iterator< _type, _tDifference, _tPointer, _tReference > &y)
template<typename _type , typename _tDifference , typename _tPointer , typename _tReference >
bool | is_undereferenceable (const any_bidirectional_iterator< _type, _tDifference, _tPointer, _tReference > &i)
template<typename _tDst , typename _tSrc >
_tDst | union_cast (_tSrc x) ynoexcept
| 使用匿名联合体进行的类型转换。
template<typename _tDst , typename... _tSrc>
std::initializer_list< _tDst > | initializer_cast (_tSrc &&...x)
| 初值符列表转换。
template<typename _pDst , class _tSrc >
_pDst | polymorphic_cast (_tSrc *x)
| 多态类指针类型转换。
template<typename _pDst , class _tSrc >
_pDst | polymorphic_downcast (_tSrc *x)
| 多态类指针向派生类指针转换。
template<typename _rDst , class _tSrc >
_rDst & | polymorphic_downcast (_tSrc &x)
| 多态类引用向派生类引用转换。
template<typename _pDst , class _tSrc >
_pDst | polymorphic_crosscast (_tSrc *x)
| 多态类指针交叉转换。
template<typename _rDst , class _tSrc >
_rDst & | polymorphic_crosscast (_tSrc &x)
| 多态类引用交叉转换。
template<typename _tContainer , typename... _tParams>
void | seq_insert (_tContainer &cont, _tParams &&...args)
| 顺序插入值至指定容器。
template<typename _tContainer >
void | erase_all (_tContainer &c, const typename _tContainer::value_type &val)
| 删除指定序列容器中和指定值的相等的元素。
template<typename _tContainer , typename _tIn , typename _tValue >
void | erase_all (_tContainer &c, _tIn first, _tIn last, const _tValue &value)
| 删除指定容器中迭代器区间中和指定值的相等的元素。
template<typename _tRange , typename _fPredicate >
void | erase_all_if (_tRange &c, _fPredicate pred)
| 删除指定序列范围（包含序列容器及内建数组等）中满足条件的元素。
template<typename _tContainer , typename _tIn , typename _fPredicate >
void | erase_all_if (_tContainer &c, _tIn first, _tIn last, _fPredicate pred)
| 删除指定容器中迭代器区间中满足条件的元素。
template<class _tMap >
std::pair< typename _tMap::iterator, bool > | search_map (_tMap &m, const typename _tMap::key_type &k)
| 按指定键值搜索指定映射。
template<typename _type , typename... _tParams>
std::array< _type, sizeof...(_tParams)> | make_array (_tParams &&...args)
| 取指定参数初始化的 std::array 对象。
bool | fexists (const char *) ynoexcept
| 判断指定路径的文件是否存在。
const char * | openmode_conv (std::ios_base::openmode) ynoexcept
std::ios_base::openmode | openmode_conv (const char *) ynoexcept
bool | operator!= (const ifile_iterator &x, const ifile_iterator &y)
bool | is_undereferenceable (const ifile_iterator &i)
| 判断 ifile_iterator 实例是否确定为不可解引用。
size_t | strlen_n (const char *)
| 带空指针检查的字符串长度计算。
char * | strcpy_n (char *, const char *)
| 带空指针检查的字符串复制。
char * | strcpycat (char *, const char *, const char *)
| 带空指针检查的字符串连接。
char * | strcatdup (const char *, const char *, void *(*)(size_t)=std::malloc)
| 带空指针检查的字符串连接复制。
template<typename _tChar >
const bool | is_null (_tChar c)
| 使用 std::char_traits::eq 判断是否为空字符。
template<typename _tChar >
size_t | ntctslen (const _tChar *s)
| 计算简单 NTCTS 长度。zz
template<typename _tChar >
std::char_traits< _tChar > ::int_type | ntctscmp (const _tChar *s1, const _tChar *s2)
| 按字典序比较简单 NTCTS 。
template<typename _tChar >
std::char_traits< _tChar > ::int_type | ntctsicmp (const _tChar *s1, const _tChar *s2)
| 按字典序比较简单 NTCTS （忽略大小写）。
template<typename _tChar >
const size_t | const_ntctslen (const _tChar *s)
| 计算简单 NTCTS 长度。
template<typename _tChar >
const size_t | const_ntctscnt (const _tChar *s, _tChar c)
| 计算简单 NTCTS 中的指定字符数。
template<typename _tChar >
const std::char_traits< _tChar > ::int_type | const_ntctscmp (const _tChar *s1, const _tChar *s2)
| 比较简单 NTCTS 。
template<typename _tChar >
const std::char_traits< _tChar > ::int_type | const_ntctscmp (const _tChar *s1, const _tChar *s2, size_t n)
| 比较限制长度上限的简单 NTCTS 。
template<typename _tChar >
const size_t | const_ntctschr (const _tChar *s, _tChar c)
| 在简单 NTCTS 中顺序查找指定字符。
template<typename _tChar >
const size_t | const_ntctschrn (const _tChar *s, _tChar c, size_t n)
| 在简单 NTCTS 中顺序查找第指定次数出现的指定字符。
template<typename _tChar >
const size_t | const_ntctsstr (const _tChar *s1, const _tChar *s2)
| 在简单 NTCTS 中顺序查找作为子串的指定 NTCTS 。
template<typename... _tParams>
size_t | sizeof_params (_tParams &&...)
| 统计函数参数列表中的参数个数。
template<typename _fCallable , typename... _tParams>
void | unseq_apply (_fCallable &&f, _tParams &&...args)
| 无序调用。
template<bool _bIsPositive, typename _tScalar >
_tScalar & | xcrease (_tScalar &_x)
| 编译期选择自增/自减运算。
template<bool _bIsPositive, typename _tScalar1 , typename _tScalar2 >
_tScalar1 & | delta_assign (_tScalar1 &_x, _tScalar2 &_y)
| 编译期选择加法/减法复合赋值运算。
template<typename _tIn , typename _fPred >
_tIn | next_if (_tIn i, _fPred f, typename std::iterator_traits< _tIn >::difference_type n=1)
| 迭代器指向的值满足条件时取邻接迭代器，否则取原值。
template<typename _tIn , typename _type >
_tIn | next_if_eq (_tIn i, const _type &val, typename std::iterator_traits< _tIn >::difference_type n=1)
template<typename _tIterator1 , typename _tIterator2 >
auto | make_move_iterator_pair (_tIterator1 it1, _tIterator2 it2) -> decltype(std::make_pair(std::make_move_iterator(it1), std::make_move_iterator(it2)))
| 取转移迭代器对。
template<typename _tRange >
auto | make_move_iterator_pair (_tRange &c) -> decltype(ystdex::make_move_iterator_pair(begin(c), end(c)))
| 取指定序列范围（包含序列容器及内建数组等）的转移迭代器对。
template<typename _tIterator , typename _fTransformer >
transformed_iterator< typename array_ref_decay< _tIterator > ::type, _fTransformer > | make_transform (_tIterator &&i, _fTransformer &&f)
| 创建转换迭代器。
template<typename _tIterator >
auto | operator| (_tIterator &&i, first_tag) -> decltype(make_transform(std::forward< decltype(i)>(i), iterator_transformation::first< typename array_ref_decay< _tIterator >::type >))
| 管道匹配操作符。
template<typename _tIterator >
auto | operator| (_tIterator &&i, second_tag) -> decltype(make_transform(std::forward< decltype(i)>(i), iterator_transformation::second< typename array_ref_decay< _tIterator >::type >))
template<typename _tIterator >
auto | operator| (_tIterator &&i, indirect_tag) -> decltype(make_transform(std::forward< decltype(i)>(i), iterator_transformation::indirect< typename array_ref_decay< _tIterator >::type >))
template<class _tContainer , typename _type >
bool | operator== (const subscriptive_iterator< _tContainer, _type > &x, const subscriptive_iterator< _tContainer, _type > &y)
| 比较成员下标迭代器的相等性。
template<class _tContainer , typename _type >
bool | operator!= (const subscriptive_iterator< _tContainer, _type > &x, const subscriptive_iterator< _tContainer, _type > &y)
| 比较成员下标迭代器的不等性。
template<typename _tIterator >
bool | is_undereferenceable (const _tIterator &)
template<typename _type >
bool | is_undereferenceable (_type *p)
template<typename _type >
_type * | raw (_type *const &p) ynoexcept
template<typename _type >
auto | raw (const std::unique_ptr< _type > &p) ynoexcept-> decltype(p.get())
template<typename _type >
_type * | raw (const std::shared_ptr< _type > &p) ynoexcept
template<typename _type >
_type * | raw (const std::weak_ptr< _type > &p) ynoexcept
template<typename _type >
bool | reset (std::unique_ptr< _type > &p) ynoexcept
template<typename _type >
bool | reset (std::shared_ptr< _type > &p) ynoexcept
template<typename _type , typename _pSrc >
std::unique_ptr< _type > | unique_raw (const _pSrc &p)
template<typename _type , typename _pSrc >
std::unique_ptr< _type > | unique_raw (_pSrc &&p)
template<typename _type >
std::unique_ptr< _type > | unique_raw (_type *p)
template<typename _type >
std::unique_ptr< _type > | unique_raw (nullptr_t) ynoexcept
template<typename _type , typename _pSrc >
std::shared_ptr< _type > | share_raw (const _pSrc &p)
template<typename _type , typename _pSrc >
std::shared_ptr< _type > | share_raw (_pSrc &&p)
template<typename _type >
std::shared_ptr< _type > | share_raw (_type *p)
template<typename _type >
std::shared_ptr< _type > | share_raw (nullptr_t) ynoexcept
template<typename _type , typename... _tParams>
std::unique_ptr< _type > | make_unique (_tParams &&...args)
| 使用 new 和指定参数构造指定类型的 std::unique_ptr 实例。
template<typename _type , typename... _tParams>
std::shared_ptr< _type > | make_shared (_tParams &&...args)
| 使用 new 和指定参数构造指定类型的 std::shared_ptr 实例。
template<typename _tDst , typename _tSrc >
_tDst | exp2u (_tSrc n) ynoexcept
| 取无符号整数的以 2 为底的无符号整数次幂，结果转换为指定目标类型。
template<class _tString >
_tString & | ltrim (_tString &&str, typename string_traits< _tString >::const_pointer t=&to_array< typename string_traits< _tString >::value_type >("\n\r\t\v ")[0])
| 删除字符串中指定的连续前缀字符。
template<class _tString >
_tString & | rtrim (_tString &&str, typename string_traits< _tString >::const_pointer t=&to_array< typename string_traits< _tString >::value_type >("\n\r\t\v ")[0])
| 删除字符串中指定的连续后缀字符。
template<class _tString >
_tString & | trim (_tString &&str, typename string_traits< _tString >::const_pointer t=&to_array< typename string_traits< _tString >::value_type >("\n\r\t\v ")[0])
| 删除字符串中指定的连续前缀与后缀字符。
template<typename _fPred , typename _fInsert , typename _tIn >
_tIn | split (_tIn b, _tIn e, _fPred is_delim, _fInsert insert)
| 以指定字符分割字符序列。
template<typename _fPred , typename _fInsert , typename _tRange >
void | split (_tRange &&c, _fPred is_delim, _fInsert insert)
| 以指定字符分割范围指定的字符串。
template<typename _tChar >
std::basic_string< _tChar > | sfmt (const _tChar *fmt,...)
| 以 C 标准输出格式的输出 std::basic_string 实例的对象。
template std::string | sfmt< char > (const char *,...)
| 显式实例化：以 C 标准输出格式的输出 std::string 对象。
template<typename _type >
decay< _type >::type | decay_copy (_type &&arg)
| 退化复制。
template<typename _type >
qualified_decay< _type >::type | decay_forward (_type &&arg)
| 退化传递。
template<typename _fCallable , typename... _tParams>
void | call_once (bool &b, _fCallable &&f, _tParams &&...args)
| 按标识调用函数，保证调用一次。
template<typename _type , typename , typename... >
_type & | parameterize_static_object ()
| 类型参数化静态对象。
template<typename _type , size_t... >
_type & | parameterize_static_object ()
| 非类型参数化静态对象。
template<typename _tKey , typename... _tKeys, typename _fInit , typename... _tParams>
auto | get_init (_fInit &&f, _tParams &&...args) -> decltype(f(std::forward< decltype(args)>(args)...))&
| 取类型标识和初始化调用指定的对象。
template<size_t... _vKeys, typename _fInit , typename... _tParams>
auto | get_init (_fInit &&f, _tParams &&...args) -> decltype(f(std::forward< decltype(args)>(args)...))&
| 取非类型标识和初始化调用指定的对象。
char * | strcatdup (const char *s1, const char *s2, void *(*fun)(size_t))
template<typename _type >
bool | operator== (nullptr_t lhs, const _type &rhs)
template<typename _type >
bool | operator== (const _type &lhs, nullptr_t rhs)
template<typename _type >
bool | operator!= (nullptr_t lhs, const _type &rhs)
template<typename _type >
bool | operator!= (const _type &lhs, nullptr_t rhs)
template<typename _tPointer >
_tPointer | any_cast (any *p) ynoexcept
| 动态泛型转换。
template<typename _tPointer >
_tPointer | any_cast (const any *p) ynoexcept
template<typename _tValue >
_tValue | any_cast (any &x)
template<typename _tValue >
_tValue | any_cast (const any &x)
template<typename _type >
_type * | unsafe_any_cast (any *p)
| 非安全动态泛型转换。
template<typename _type >
const _type * | unsafe_any_cast (const any *p)
template<typename _tDst , typename _tSrc >
_tDst | general_cast (_tSrc *x)
| 一般类型转换。
template<typename _tDst , typename _tSrc >
_tDst | general_cast (_tSrc &x)
template<typename _tDst , typename _tSrc >
const _tDst | general_cast (const _tSrc &x)
template<class _tContainer , typename... _tParams>
void | assign (_tContainer &con, _tParams &&...args)
| 插入参数指定的元素到容器。
template<class _tContainer , typename _type , size_t _vN>
void | assign (_tContainer &con, const _type(&arr)[_vN])
template<class _tContainer , typename _tKey >
auto | at (_tContainer &con, const _tKey &k) -> decltype(con.at(k))

访问关联容器。

异常

  std::out_of_range | 访问的值不存在。

template<class _tContainer , typename _tKey >
const _tKey & | at (const _tContainer &con, const _tKey &k)
template<typename _type , size_t _vN, typename _tSrc >
std::array< _type, _vN > | to_array (const _tSrc &src)
| 取指定参数转换为 std::array 对象。
template<typename _type , size_t _vN>
std::array< _type, _vN > | to_array (const std::array< _type, _vN > &src)
template<typename _type , size_t _vN, typename _tSrcElement >
std::array< _type, _vN > | to_array (const _tSrcElement(&src)[_vN])
template<typename _type , size_t _vN, typename _tSrcElement >
std::array< _type, _vN > | to_array (_tSrcElement(&&src)[_vN])
template<typename _fCallable >
void | seq_apply (_fCallable &&)
| 顺序递归调用。
template<typename _fCallable , typename _type , typename... _tParams>
void | seq_apply (_fCallable &&f, _type &&arg, _tParams &&...args)
template<typename _type >
_type & | unref (_type &&x) ynoexcept
| 解除引用包装。
template<typename _type >
_type & | unref (const std::reference_wrapper< _type > &x) ynoexcept
template<typename _tBi , typename _fPred >
_tBi | prev_if (_tBi i, _fPred f, typename std::iterator_traits< _tBi >::difference_type n=1)
| 迭代器指向的值满足条件时取反向邻接迭代器，否则取原值。
template<typename _tBi , typename _type >
_tBi | prev_if_eq (_tBi i, const _type &val, typename std::iterator_traits< _tBi >::difference_type n=1)
template<typename _type >
bool | operator== (const pointer_iterator< _type > &x, const pointer_iterator< _type > &y)
template<typename _type >
bool | operator!= (const pointer_iterator< _type > &x, const pointer_iterator< _type > &y)
template<typename _type , typename _tIterator , typename _tTraits >
bool | operator== (const pseudo_iterator< _type, _tIterator, _tTraits > &x, const pseudo_iterator< _type, _tIterator, _tTraits > &y)
template<typename _type , typename _tIterator , typename _tTraits >
bool | operator!= (const pseudo_iterator< _type, _tIterator, _tTraits > &x, const pseudo_iterator< _type, _tIterator, _tTraits > &y)
template<typename _type , typename _fTransformer >
bool | operator== (const transformed_iterator< _type, _fTransformer > &x, const transformed_iterator< _type, _fTransformer > &y)
template<typename _type , typename _fTransformer >
bool | operator!= (const transformed_iterator< _type, _fTransformer > &x, const transformed_iterator< _type, _fTransformer > &y)
template<typename _tMaster , typename _tSlave >
bool | operator== (const pair_iterator< _tMaster, _tSlave > &x, const pair_iterator< _tMaster, _tSlave > &y)
template<typename _tMaster , typename _tSlave >
bool | operator!= (const pair_iterator< _tMaster, _tSlave > &x, const pair_iterator< _tMaster, _tSlave > &y)
template<typename _tString >
_tString | get_mid (const _tString &str, typename _tString::size_type l=1)
| 取删除前缀和后缀的子字符串。
template<typename _tString >
_tString | get_mid (const _tString &str, typename _tString::size_type l, typename _tString::size_type r)
std::string | to_string (unsigned char val)
| 转换为字符串。
std::string | to_string (unsigned short val)
template<typename _type >
std::string | to_string (_type val, typename std::enable_if< std::is_enum< _type >::value, int >::type=0)
template<typename _type , size_t _vN>
size_t | arrlen (_type(&)[_vN])
| 计算指定数组类型对象的长度。
template<typename _type , size_t _vN>
size_t | arrlen (_type(&&)[_vN])

## 变量

class ystdex::nullptr_t | nullptr = {}
const first_tag | get_first {}
| 操纵子。
const first_tag | get_key {}
const second_tag | get_second {}
const second_tag | get_value {}
struct ystdex::indirect_tag | get_indirect
typedef any_input_iterator < void_ref, ptrdiff_t, void *, void_ref > | input_monomorphic_iterator
template<typename _type , typename _tDifference , typename _tPointer , typename _tReference >
bool | operator== (const any_input_iterator< _type, _tDifference, _tPointer, _tReference > &x, const any_input_iterator< _type, _tDifference, _tPointer, _tReference > &y)
template<typename _type , typename _tDifference , typename _tPointer , typename _tReference >
bool | operator!= (const any_input_iterator< _type, _tDifference, _tPointer, _tReference > &x, const any_input_iterator< _type, _tDifference, _tPointer, _tReference > &y)
template<typename _type , typename _tDifference , typename _tPointer , typename _tReference >
bool | is_undereferenceable (const any_input_iterator< _type, _tDifference, _tPointer, _tReference > &i)

## 类型定义说明

typedef any_bidirectional_iterator<void_ref, ptrdiff_t, void*, void_ref> ystdex::bidirectional_monomorphic_iterator

在文件 any_iterator.hpp 第 436 行定义.

typedef unsigned char ystdex::byte

字节类型。

注解
  ISO C++ 对访问存储的 glvalue 的类型有严格限制，当没有对象生存期保证时， 仅允许（可能 cv 修饰的） char 和 unsigned char 及其指针/引用或 void* ， 而不引起未定义行为(undefined behavior) 。

在文件 ydef.h 第 429 行定义.

typedef const char* ystdex::const_path_t

在文件 cstdio.h 第 46 行定义.

typedef int ystdex::errno_t

在文件 ydef.h 第 431 行定义.

typedef any_forward_iterator<void_ref, ptrdiff_t, void*, void_ref> ystdex::forward_monomorphic_iterator

在文件 any_iterator.hpp 第 384 行定义.

typedef any_input_iterator<void_ref, ptrdiff_t, void*, void_ref> ystdex::input_monomorphic_iterator

在文件 any_iterator.hpp 第 341 行定义.

typedef char* ystdex::path_t

路径类型定义。

自从
  build 216

在文件 cstdio.h 第 45 行定义.

## 函数说明

template<typename _tPointer >

_tPointer ystdex::any_cast | ( | any * | p | ) |

inline

动态泛型转换。

注解
  语义同 boost::any_cast 。

自从
  build 398

待办事项:
  检验特定环境（如使用动态库时）比较 std::type_info::name() 的必要性。

返回
  当 `x != nullptr && x->type() == typeid(remove_pointer< _tPointer>::type)` 为指向对象的指针，否则为空指针。

在文件 any.h 第 776 行定义.

参考自 YSLib::ValueObject::Access() , 以及 YSLib::ValueObject::AccessPtr().

这是这个函数的调用关系图:
template<typename _tPointer >

_tPointer ystdex::any_cast | ( | const any * | p | ) |

inline

在文件 any.h 第 781 行定义.

template<typename _tValue >

_tValue ystdex::any_cast | ( | any & | x | ) |

inline

异常

  bad_any_cast | 当 `x.type() != typeid(remove_reference<_tValue>::type)` 。

在文件 any.h 第 792 行定义.

template<typename _tValue >

_tValue ystdex::any_cast | ( | const any & | x | ) |

在文件 any.h 第 802 行定义.

template<class _tContainer , typename _tKey >

auto ystdex::at | ( | _tContainer & | con,
|  | const _tKey & | k
| ) |  | -> decltype(con.at(k))

访问关联容器。

异常

  std::out_of_range | 访问的值不存在。

自从
  build 399

在文件 container.hpp 第 67 行定义.

参考自 AccessNode().

这是这个函数的调用关系图:
template<class _tContainer , typename _tKey >

const _tKey& ystdex::at | ( | const _tContainer & | con,
|  | const _tKey & | k
| ) |  |

在文件 container.hpp 第 74 行定义.

参考 YSLib::end().

函数调用图:
template<typename _fCallable , typename... _tParams>

void ystdex::call_once | ( | bool & | b,
|  | _fCallable && | f,
|  | _tParams &&... | args
| ) |  |

inline

按标识调用函数，保证调用一次。

注解
  类似 std::call_once ，但多线程环境下失效。
  ISO C++11（至 N3376 ） 30.4 synopsis 处的声明存在错误。

自从
  build 327

当标识为 true 时候无作用，否则调用函数。

在文件 utility.hpp 第 165 行定义.

参考 yforward.

参考自 ystdex::call_once_init< _type, _tOnceFlag >::call_once_init() , 以及 ystdex::call_once_init< _type, _tOnceFlag >::~call_once_init().

这是这个函数的调用关系图:
template<typename _tDst , typename _tSrc >

_tDst ystdex::exp2u | ( | _tSrc | n | ) |

inline

取无符号整数的以 2 为底的无符号整数次幂，结果转换为指定目标类型。

模板参数

  _tSrc | 源类型。
  _tDst | 目标类型。

前置条件
  静态断言： `is_unsigned<_tSrc>::value`。

自从
  build 260

在文件 rational.hpp 第 48 行定义.

bool ystdex::fexists | ( | const char * | path | ) |

判断指定路径的文件是否存在。

注解
  使用 std::fopen 实现。

前置条件
  断言：参数非空。

自从
  build 326

在文件 cstdio.cpp 第 35 行定义.

参考 yconstraint.

参考自 YSLib::Drawing::FontCache::LoadTypefaces() , 以及 platform::ufexists().

这是这个函数的调用关系图:
template<typename _tKey , typename... _tKeys, typename _fInit , typename... _tParams>

auto ystdex::get_init | ( | _fInit && | f,
|  | _tParams &&... | args
| ) |  | -> decltype(f(std::forward<decltype( args )>( args )...))&

inline

取类型标识和初始化调用指定的对象。

模板参数

  _tKey | 起始类型参数化标识。
  _tKeys | 非起始类型参数化标识。
  _fInit | 初始化调用类型。
  _tParams | 初始化参数类型。

返回
  初始化后的对象的左值引用。

自从
  build 327

在文件 utility.hpp 第 217 行定义.

参考 yforward.

template<size_t... _vKeys, typename _fInit , typename... _tParams>

auto ystdex::get_init | ( | _fInit && | f,
|  | _tParams &&... | args
| ) |  | -> decltype(f(std::forward<decltype( args )>( args )...))&

inline

取非类型标识和初始化调用指定的对象。

模板参数

  _vKeys | 非类型参数化标识。
  _fInit | 初始化调用类型。
  _tParams | 初始化参数类型。

返回
  初始化后的对象的左值引用。

自从
  build 327

在文件 utility.hpp 第 237 行定义.

参考 yforward.

template<typename _tDst , typename... _tSrc>

std::initializer_list<_tDst> ystdex::initializer_cast | ( | _tSrc &&... | x | ) |

inline

初值符列表转换。

模板参数

  _tSrc | 源类型。
  _tDst | 目标类型。

自从
  build 304

在文件 cast.hpp 第 76 行定义.

参考 yforward.

template<typename _tChar >

const bool ystdex::is_null | ( | _tChar | c | ) |

使用 std::char_traits::eq 判断是否为空字符。

自从
  build 329

在文件 cstring.h 第 86 行定义.

参考自 const_ntctschr(),const_ntctschrn(),const_ntctscmp(),const_ntctscnt(),const_ntctslen(),const_ntctsstr(),MBCSToUCS2(),ntctscmp(),ntctsicmp(),ntctslen(),UCS2ToMBCS() , 以及 UCS4ToUCS2().

这是这个函数的调用关系图:
template<typename _type , typename _tDifference , typename _tPointer , typename _tReference >

bool ystdex::is_undereferenceable | ( | const any_input_iterator< _type, _tDifference, _tPointer, _tReference > & | i | ) |

inline

在文件 any_iterator.hpp 第 338 行定义.

参考自 CHRLib::FillByte(),ystdex::any_ops::iterator_handler< _type >::manage() , 以及 Session::Session().

这是这个函数的调用关系图:
template<typename _type , typename _tDifference , typename _tPointer , typename _tReference >

bool ystdex::is_undereferenceable | ( | const any_forward_iterator< _type, _tDifference, _tPointer, _tReference > & | i | ) |

inline

在文件 any_iterator.hpp 第 381 行定义.

template<typename _type , typename _tDifference , typename _tPointer , typename _tReference >

bool ystdex::is_undereferenceable | ( | const any_bidirectional_iterator< _type, _tDifference, _tPointer, _tReference > & | i | ) |

inline

在文件 any_iterator.hpp 第 433 行定义.

template<typename _type , typename... _tParams>

std::array<_type, sizeof...(_tParams)> ystdex::make_array | ( | _tParams &&... | args | ) |

inline

取指定参数初始化的 std::array 对象。

自从
  build 337

在文件 container.hpp 第 211 行定义.

参考 decay_copy() , 以及 yforward.

函数调用图:

const char * ystdex::openmode_conv | ( | std::ios_base::openmode | mode | ) |

在文件 cstdio.cpp 第 49 行定义.

std::ios_base::openmode ystdex::openmode_conv | ( | const char * | str | ) |

在文件 cstdio.cpp 第 76 行定义.

参考 yunseq().

函数调用图:

bool ystdex::operator!= | ( | const ifile_iterator & | x,
|  | const ifile_iterator & | y
| ) |  |

inline

在文件 cstdio.h 第 178 行定义.

template<typename _type >

bool ystdex::operator!= | ( | const pointer_iterator< _type > & | x,
|  | const pointer_iterator< _type > & | y
| ) |  |

inline

在文件 iterator.hpp 第 263 行定义.

template<typename _type , typename _tDifference , typename _tPointer , typename _tReference >

bool ystdex::operator!= | ( | const any_input_iterator< _type, _tDifference, _tPointer, _tReference > & | x,
|  | const any_input_iterator< _type, _tDifference, _tPointer, _tReference > & | y
| ) |  |

inline

在文件 any_iterator.hpp 第 335 行定义.

template<typename _type , typename _tDifference , typename _tPointer , typename _tReference >

bool ystdex::operator!= | ( | const any_forward_iterator< _type, _tDifference, _tPointer, _tReference > & | x,
|  | const any_forward_iterator< _type, _tDifference, _tPointer, _tReference > & | y
| ) |  |

inline

在文件 any_iterator.hpp 第 378 行定义.

template<typename _type , typename _tIterator , typename _tTraits >

bool ystdex::operator!= | ( | const pseudo_iterator< _type, _tIterator, _tTraits > & | x,
|  | const pseudo_iterator< _type, _tIterator, _tTraits > & | y
| ) |  |

inline

在文件 iterator.hpp 第 420 行定义.

template<typename _type , typename _tDifference , typename _tPointer , typename _tReference >

bool ystdex::operator!= | ( | const any_bidirectional_iterator< _type, _tDifference, _tPointer, _tReference > & | x,
|  | const any_bidirectional_iterator< _type, _tDifference, _tPointer, _tReference > & | y
| ) |  |

inline

在文件 any_iterator.hpp 第 430 行定义.

template<typename _type >

bool ystdex::operator!= | ( | nullptr_t | lhs,
|  | const _type & | rhs
| ) |  |

inline

在文件 ydef.h 第 498 行定义.

参考 ystdex::nullptr_t::equals().

函数调用图:
template<typename _type >

bool ystdex::operator!= | ( | const _type & | lhs,
|  | nullptr_t | rhs
| ) |  |

inline

在文件 ydef.h 第 504 行定义.

参考 ystdex::nullptr_t::equals().

函数调用图:
template<typename _type , typename _fTransformer >

bool ystdex::operator!= | ( | const transformed_iterator< _type, _fTransformer > & | x,
|  | const transformed_iterator< _type, _fTransformer > & | y
| ) |  |

inline

在文件 iterator.hpp 第 538 行定义.

template<typename _tMaster , typename _tSlave >

bool ystdex::operator!= | ( | const pair_iterator< _tMaster, _tSlave > & | x,
|  | const pair_iterator< _tMaster, _tSlave > & | y
| ) |  |

inline

在文件 iterator.hpp 第 794 行定义.

template<class _tContainer , typename _type >

bool ystdex::operator!= | ( | const subscriptive_iterator< _tContainer, _type > & | x,
|  | const subscriptive_iterator< _tContainer, _type > & | y
| ) |  |

比较成员下标迭代器的不等性。

自从
  build 356

在文件 iterator.hpp 第 951 行定义.

template<typename _type >

bool ystdex::operator== | ( | const pointer_iterator< _type > & | x,
|  | const pointer_iterator< _type > & | y
| ) |  |

inline

自从
  build 356

在文件 iterator.hpp 第 254 行定义.

template<typename _type , typename _tDifference , typename _tPointer , typename _tReference >

bool ystdex::operator== | ( | const any_input_iterator< _type, _tDifference, _tPointer, _tReference > & | x,
|  | const any_input_iterator< _type, _tDifference, _tPointer, _tReference > & | y
| ) |  |

inline

在文件 any_iterator.hpp 第 333 行定义.

template<typename _type , typename _tDifference , typename _tPointer , typename _tReference >

bool ystdex::operator== | ( | const any_forward_iterator< _type, _tDifference, _tPointer, _tReference > & | x,
|  | const any_forward_iterator< _type, _tDifference, _tPointer, _tReference > & | y
| ) |  |

inline

在文件 any_iterator.hpp 第 376 行定义.

template<typename _type , typename _tIterator , typename _tTraits >

bool ystdex::operator== | ( | const pseudo_iterator< _type, _tIterator, _tTraits > & | x,
|  | const pseudo_iterator< _type, _tIterator, _tTraits > & | y
| ) |  |

inline

自从
  build 356

在文件 iterator.hpp 第 412 行定义.

参考 ystdex::pseudo_iterator< _type, _tIterator, _tTraits >::value.

template<typename _type , typename _tDifference , typename _tPointer , typename _tReference >

bool ystdex::operator== | ( | const any_bidirectional_iterator< _type, _tDifference, _tPointer, _tReference > & | x,
|  | const any_bidirectional_iterator< _type, _tDifference, _tPointer, _tReference > & | y
| ) |  |

inline

在文件 any_iterator.hpp 第 428 行定义.

template<typename _type >

bool ystdex::operator== | ( | nullptr_t | lhs,
|  | const _type & | rhs
| ) |  |

inline

自从
  build 316

在文件 ydef.h 第 485 行定义.

参考 ystdex::nullptr_t::equals().

函数调用图:
template<typename _type >

bool ystdex::operator== | ( | const _type & | lhs,
|  | nullptr_t | rhs
| ) |  |

inline

在文件 ydef.h 第 491 行定义.

参考 ystdex::nullptr_t::equals().

函数调用图:
template<typename _type , typename _fTransformer >

bool ystdex::operator== | ( | const transformed_iterator< _type, _fTransformer > & | x,
|  | const transformed_iterator< _type, _fTransformer > & | y
| ) |  |

inline

自从
  build 356

在文件 iterator.hpp 第 530 行定义.

参考 ystdex::transformed_iterator< _tIterator, _fTransformer >::get().

函数调用图:
template<typename _tMaster , typename _tSlave >

bool ystdex::operator== | ( | const pair_iterator< _tMaster, _tSlave > & | x,
|  | const pair_iterator< _tMaster, _tSlave > & | y
| ) |  |

自从
  build 356

在文件 iterator.hpp 第 785 行定义.

参考 ystdex::pair_iterator< _tMaster, _tSlave, _tTraits >::base().

函数调用图:
template<class _tContainer , typename _type >

bool ystdex::operator== | ( | const subscriptive_iterator< _tContainer, _type > & | x,
|  | const subscriptive_iterator< _tContainer, _type > & | y
| ) |  |

比较成员下标迭代器的相等性。

自从
  build 356

在文件 iterator.hpp 第 939 行定义.

参考 ystdex::subscriptive_iterator< _tContainer, _type >::equals().

函数调用图:
template<typename _tIterator >

auto ystdex::operator| | ( | _tIterator && | i,
|  | first_tag |
| ) |  | -> decltype(make_transform(std::forward<decltype( i )>( i ), iterator_transformation::first< typename array_ref_decay<_tIterator>::type>))

inline

管道匹配操作符。

自从
  build 288

在文件 iterator.hpp 第 607 行定义.

参考 ystdex::iterator_transformation::first(),make_transform() , 以及 yforward.

函数调用图:
template<typename _tIterator >

auto ystdex::operator| | ( | _tIterator && | i,
|  | second_tag |
| ) |  | -> decltype(make_transform(std::forward<decltype( i )>( i ), iterator_transformation::second< typename array_ref_decay<_tIterator>::type>))

inline

在文件 iterator.hpp 第 616 行定义.

参考 make_transform(),ystdex::iterator_transformation::second() , 以及 yforward.

函数调用图:
template<typename _tIterator >

auto ystdex::operator| | ( | _tIterator && | i,
|  | indirect_tag |
| ) |  | -> decltype(make_transform(std::forward<decltype( i )>( i ), iterator_transformation::indirect< typename array_ref_decay<_tIterator>::type>))

inline

自从
  build 358

在文件 iterator.hpp 第 626 行定义.

参考 ystdex::iterator_transformation::indirect(),make_transform() , 以及 yforward.

函数调用图:
template<typename _type , typename , typename... >

_type& ystdex::parameterize_static_object | ( |  | ) |

inline

类型参数化静态对象。

警告
  不可重入。
  非线程安全。

自从
  build 303

在文件 utility.hpp 第 183 行定义.

template<typename _type , size_t... >

_type& ystdex::parameterize_static_object | ( |  | ) |

inline

非类型参数化静态对象。

警告
  不可重入。
  非线程安全。

自从
  build 301

在文件 utility.hpp 第 197 行定义.

template<typename _fCallable >

void ystdex::seq_apply | ( | _fCallable && |  | ) |

inline

顺序递归调用。

参见
  关于调用参数类型： ISO C++11 30.3.1.2[thread.thread.constr] 。

自从
  build 327

在文件 functional.hpp 第 60 行定义.

参考自 seq_apply() , 以及 seq_insert().

这是这个函数的调用关系图:
template<typename _fCallable , typename _type , typename... _tParams>

void ystdex::seq_apply | ( | _fCallable && | f,
|  | _type && | arg,
|  | _tParams &&... | args
| ) |  |

inline

在文件 functional.hpp 第 64 行定义.

参考 decay_forward(),seq_apply() , 以及 yforward.

函数调用图:
template<typename _tContainer , typename... _tParams>

void ystdex::seq_insert | ( | _tContainer & | cont,
|  | _tParams &&... | args
| ) |  |

inline

顺序插入值至指定容器。

自从
  build 338

在文件 container.hpp 第 122 行定义.

参考 seq_apply() , 以及 yforward.

参考自 YSLib::CollectNodes().

函数调用图:

这是这个函数的调用关系图:
template<typename _tChar >

std::basic_string<_tChar> ystdex::sfmt | ( | const _tChar * | fmt,
|  |  | ...
| ) |  |

以 C 标准输出格式的输出 std::basic_string 实例的对象。

待办事项:
  提供 char 以外的模板参数的正确实现。

注解
  Clang++ 对于模板声明直接提示格式字符串类型错误。

自从
  build 322

在文件 string.hpp 第 202 行定义.

参考自 YSLib::Drawing::FontCache::FontCache(),GetDesktopDownHandle() , 以及 operator>>().

这是这个函数的调用关系图:

template std::string ystdex::sfmt< char > | ( | const char * | ,
|  |  | ...
| ) |  |

显式实例化：以 C 标准输出格式的输出 std::string 对象。

参见
  sfmt 模板声明。

自从
  build 350

template<typename... _tParams>

size_t ystdex::sizeof_params | ( | _tParams && | ... | ) |

inline

统计函数参数列表中的参数个数。

自从
  build 360 。

在文件 functional.hpp 第 46 行定义.

template<typename _tForward >

_tForward ystdex::stable_range_unique | ( | _tForward | first,
|  | _tForward | last
| ) |  |

去除迭代器指定的范围中的重复元素，且不改变元素之间的相对顺序。

参数

  first | 输入范围起始迭代器。
  last | 输入范围终止迭代器。

返回
  输出范围终止迭代器。

注解
  输入和输出范围的起始迭代器相同。
  输出范围元素之间的相对顺序和输入的范围保持一致。
  时间复杂度： O(n^2) ，其中 n 满足 `std::advance(first, n) == last` 。

自从
  build 265

在文件 algorithm.hpp 第 129 行定义.

参考 std::swap().

函数调用图:

char* ystdex::strcatdup | ( | const char * | s1,
|  | const char * | s2,
|  | void *(*)(size_t) | fun
| ) |  |

在文件 cstring.cpp 第 59 行定义.

参考 strcpycat().

函数调用图:

char* ystdex::strcatdup | ( | const char * | ,
|  | const char * | ,
|  | void * | *)(size_t = `std::malloc`
| ) |  |

带空指针检查的字符串连接复制。

返回
  目标参数。

对传入参数进行非空检查后串接指定的两个字符串， 结果复制至用指定分配函数（默认为 std::malloc）新分配的空间。

char * ystdex::strcpy_n | ( | char * | d,
|  | const char * | s
| ) |  |

带空指针检查的字符串复制。

返回
  成功时为复制的字符串，失败时为空指针。

当目标字符串和源字符串都非空时用 std::strcpy 复制字符串。

在文件 cstring.cpp 第 41 行定义.

char * ystdex::strcpycat | ( | char * | d,
|  | const char * | s1,
|  | const char * | s2
| ) |  |

带空指针检查的字符串连接。

返回
  返回目标参数。

对传入参数进行非空检查后串接指定的两个字符串，结果复制至指定位置。

在文件 cstring.cpp 第 47 行定义.

参考 YB_UNLIKELY.

参考自 strcatdup().

这是这个函数的调用关系图:

size_t ystdex::strlen_n | ( | const char * | s | ) |

带空指针检查的字符串长度计算。

返回
  当字符指针非空时为 std::strlen 计算的串长，否则为 0 。

在文件 cstring.cpp 第 35 行定义.

参考自 IsStemOf().

这是这个函数的调用关系图:
template<typename _type , size_t _vN, typename _tSrc >

std::array<_type, _vN> ystdex::to_array | ( | const _tSrc & | src | ) |

inline

取指定参数转换为 std::array 对象。

自从
  build 337

在文件 container.hpp 第 224 行定义.

template<typename _type , size_t _vN>

std::array<_type, _vN> ystdex::to_array | ( | const std::array< _type, _vN > & | src | ) |

inline

在文件 container.hpp 第 230 行定义.

template<typename _type , size_t _vN, typename _tSrcElement >

std::array<_type, _vN> ystdex::to_array | ( | const _tSrcElement(&) | src[_vN] | ) |

inline

在文件 container.hpp 第 236 行定义.

template<typename _type , size_t _vN, typename _tSrcElement >

std::array<_type, _vN> ystdex::to_array | ( | _tSrcElement(&&) | src[_vN] | ) |

inline

在文件 container.hpp 第 245 行定义.

std::string ystdex::to_string | ( | unsigned char | val | ) |

inline

转换为字符串。

注解
  可与 `std::to_string` 共用以避免某些类型转换警告， 如 g++ 的 [-Wsign-promo] 。

自从
  build 308

在文件 string.hpp 第 172 行定义.

参考自 FetchEncodingString(),GetDesktopDownHandle(),Reduce(),ShlReader::SaveBookmarks(),ColorBox::SetColor(),YSLib::StringifyToNode(),to_string(),to_string(),TextInfoBox::UpdateData() , 以及 SettingPanel::UpdateInfo().

这是这个函数的调用关系图:

std::string ystdex::to_string | ( | unsigned short | val | ) |

inline

在文件 string.hpp 第 177 行定义.

参考 to_string().

函数调用图:
template<typename _type >

std::string ystdex::to_string | ( | _type | val,
|  | typename std::enable_if< std::is_enum< _type >::value, int >::type | = `0`
| ) |  |

inline

在文件 string.hpp 第 183 行定义.

参考 to_string().

函数调用图:
template<typename _type >

_type& ystdex::unref | ( | _type && | x | ) |

解除引用包装。

注解
  默认只对于 std::reference_wrapper 的实例类型的对象重载。
  使用 ADL 。

自从
  build 348

在文件 functional.hpp 第 253 行定义.

template<typename _type >

_type& ystdex::unref | ( | const std::reference_wrapper< _type > & | x | ) |

在文件 functional.hpp 第 258 行定义.

template<typename _type >

_type* ystdex::unsafe_any_cast | ( | any * | p | ) |

inline

非安全动态泛型转换。

注解
  语义同 boost::unsafe_any_cast 。

前置条件
  断言： `p` 。

自从
  build 331

在文件 any.h 第 822 行定义.

template<typename _type >

const _type* ystdex::unsafe_any_cast | ( | const any * | p | ) |

inline

在文件 any.h 第 831 行定义.

template<typename _fCallable , typename... _tParams>

void ystdex::unseq_apply | ( | _fCallable && | f,
|  | _tParams &&... | args
| ) |  |

inline

无序调用。

参见
  关于调用参数类型： ISO C++11 30.3.1.2[thread.thread.constr] 。

自从
  build 327

在文件 functional.hpp 第 79 行定义.

参考 decay_forward(),yforward , 以及 yunseq().

参考自 YSLib::UI::AddWidgets(),YSLib::UI::AddWidgetsZ(),TextInfoBox::Refresh() , 以及 YSLib::UI::RemoveWidgets().

函数调用图:

这是这个函数的调用关系图:
template<typename _type , typename... _tParams>

auto ystdex::unsequenced | ( | _type && | arg,
|  | _tParams && | ...
| ) |  | -> decltype(std::forward<decltype( arg )>( arg ))

inline

无序列依赖表达式组求值实现。

返回
  第一个参数的引用。

自从
  build 296

在文件 ydef.h 第 578 行定义.

参考 yforward.

## 变量说明

const first_tag ystdex::get_first {}

操纵子。

自从
  build 288

在文件 iterator.hpp 第 594 行定义.

struct ystdex::indirect_tag ystdex::get_indirect

参考自 YSLib::UI::MUIContainer::GetBegin() , 以及 YSLib::UI::MUIContainer::GetEnd().

const first_tag ystdex::get_key {}

在文件 iterator.hpp 第 594 行定义.

参考自 FetchFontFamilyNames(),LocateForWidget(),session_ptr() , 以及 ShlTextReader::SettingSession::SettingSession().

const second_tag ystdex::get_second {}

在文件 iterator.hpp 第 595 行定义.

const second_tag ystdex::get_value {}

在文件 iterator.hpp 第 595 行定义.

参考自 YSLib::UI::MUIContainer::Contains(),YSLib::GEvent< _tRet(_tParams...)>::Contains(),YSLib::UI::MUIContainer::GetBegin(),YSLib::UI::MUIContainer::GetEnd(),YSLib::UI::MenuHost::HideAll(),YSLib::UI::Panel::MoveToTop(),YSLib::UI::MUIContainer::operator-=(),YSLib::UI::MUIContainer::PaintVisibleChildren(),YSLib::Timers::Timer::RefreshAll(),YSLib::Timers::Timer::ResetAll() , 以及 YSLib::UI::MenuHost::ShowAll().

class ystdex::nullptr_t ystdex::nullptr = {}