YSTest: ystdex 命名空间参考

YSTest PreAlpha_b700_20160611 The YSLib Test Project

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

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

命名空间 | 类 | 类型定义 | 枚举 | 函数 | 变量
ystdex 命名空间参考

<functional> 特性测试宏。 更多...

## 命名空间

| any_ops
| any 操作的命名空间。
| cpp2011
| 包含 ISO C++ 2011 引入的名称的命名空间。
| cpp2014
| 包含 ISO C++ 2014 引入的名称的命名空间。
| dep_ops
| 依赖名称查找操作：作为 ADL 的边界。
| dep_swap
| 引入 std::swap 实现为 ADL 提供重载的命名空间。
| details
| examiners
| 操作检测命名空间。
| iterator_transformation
| 迭代变换操作。
| single_thread
| 单线程操作：保证单线程环境下接口及符合对应的 std 命名空间下的接口。
| threading
| 在单线程环境和多线程环境下都可用的线程同步接口。
| vseq

## 类

struct | addressof_op
| std::addressof 仿函数。 更多...
struct | addressof_op< void >
struct | addrof
| 一元 & 操作。 更多...
struct | addrof< void >
class | allocator_delete
| 释放分配器的删除器。 更多...
struct | always
| 表达式 SFINAE 别名模板。 更多...
struct | and_
| 逻辑操作元函数。 更多...
struct | and_< _b1 >
struct | and_< _b1, _b2, _bn... >
struct | and_<>
class | any
| 基于类型擦除的动态泛型对象。 更多...
class | any_bidirectional_iterator
| 动态泛型双向迭代器。 更多...
struct | any_constructible
| 接受任意参数类型构造的类型。 更多...
class | any_forward_iterator
| 动态泛型前向迭代器。 更多...
class | any_input_iterator
| 动态泛型输入迭代器。 更多...
struct | are_same
| 判断第一个参数和之后的参数指定的类型相同。 更多...
class | bad_any_cast
| 动态泛型转换失败异常。 更多...
class | bad_optional_access
| 可选值操作失败异常。 更多...
class | basic_string_view
class | basic_tstring_view
| 指定结束字符的只读字符串视图。 更多...
class | basic_tstring_view< _tChar, _tTraits, 0 >
class | bitseg_iterator
| 位段迭代器。 更多...
class | block_buffer
| 块缓冲。 更多...
struct | boxed_value
| 包装类类型的值的对象。 更多...
class | call_once_init
| 使用 call_once 的静态初始化管理器。 更多...
struct | call_projection
| 调用投影：向原调用传递序列指定的位置的参数。 更多...
struct | call_projection< _tRet(_tParams...), index_sequence< _vSeq... > >
struct | call_projection< std::function< _tRet(_tParams...)>, index_sequence< _vSeq... > >
struct | call_projection< std::tuple< _tParams... >, index_sequence< _vSeq... > >
class | cloneable
| 可动态复制的抽象基类。 更多...
struct | combined_hash
| 使用 std::hash 和 ystdex::hash_combine_seq 实现的对特定类型的散列。 更多...
struct | combined_hash< _type >
struct | combined_hash< std::pair< _type1, _type2 > >
struct | combined_hash< std::tuple< _types... > >
struct | composed
| 复合函数。 更多...
class | container_adaptor
| 容器适配器。 更多...
class | container_inserter
| 容器插入函数对象。 更多...
struct | default_init_t
| 默认初始化标记。 更多...
struct | default_last_value
| 合并值序列。 更多...
struct | default_last_value< void >
struct | delta_assignment
| 选择加法/减法复合赋值运算仿函数。 更多...
struct | delta_assignment< false, _tScalar1, _tScalar2 >
struct | deref_self
| 间接操作：返回派生类自身引用。 更多...
struct | empty_base
| 空基类模板。 更多...
class | enum_union
struct | expand_proxy
struct | expand_proxy< _fCallable, 0 >
struct | expanded_caller
| 接受冗余参数的可调用对象。 更多...
class | fixed_point
| 通用定点数。 更多...
struct | free_delete
| 使用显式析构函数调用和 std::free 的删除器。 更多...
struct | free_delete< _type[]>
struct | get_get_t
struct | get_indirect_t
struct | guard
| 作用域守护：析构时调用保存的函数对象或引用。 更多...
struct | has_equality_operator
| 判断是否存在合式的结果可转换为 bool 类型的 == 操作符接受指定类型的表达式。 更多...
struct | has_mem_apply
| 判断 _type 是否包含可以指定参数应用得到类型的成员 apply 模板。 更多...
struct | has_mem_is_transparent
| 判断 _type 是否包含 is_transparent 成员类型。 更多...
struct | has_mem_type
| 判断 _type 是否包含 type 类型成员。 更多...
struct | has_mem_value
| 判断 _type 是否包含 value 成员。 更多...
struct | has_mem_value_type
| 判断 _type 是否包含 value_type 类型成员。 更多...
struct | has_nested_allocator
| 判断类型具有嵌套的成员 allocator_type 指称一个可复制构造的类类型。 更多...
struct | has_nonempty_virtual_base
| 判断指定类型是否有非空虚基类。 更多...
struct | has_overloaded_addressof
| 判断是否存在合式重载 & 操作符接受指定类型的表达式。 更多...
struct | has_subscription
| 判断是否存在合式的结果为非 void 类型的 [] 操作符接受指定类型的表达式。 更多...
struct | have_common_nonempty_virtual_base
| 判断指定的两个类类型是否不同且有公共非空虚基类。 更多...
struct | have_same_iterator_category
| 判断若干个迭代器是否指定的类别。 更多...
struct | have_same_modulo
| 判断两个类型是否具有相同的模值。 更多...
struct | id
| 恒等仿函数。 更多...
struct | id< void >
struct | identity
| 恒等元函数。 更多...
class | ifile_iterator
| 基于 ISO C 标准库的流只读迭代器。 更多...
struct | in_place_t
| 原地构造标记。 更多...
struct | indirect
| 一元 * 操作。 更多...
struct | indirect< void >
class | indirect_input_iterator
| 间接输入迭代器。 更多...
struct | integer_width
| 取指定整数类型的位宽度。 更多...
struct | is_aligned_compatible
| 判断是否对齐兼容。 更多...
struct | is_aligned_placeable
| 判断是否可原地对齐存储。 更多...
struct | is_aligned_replaceable
| 判断是否可替换对齐存储。 更多...
struct | is_aligned_storable
| 判断是否可对齐存储。 更多...
struct | is_allocatable
| 判断类型是否符合分配器要求的目标类型。 更多...
struct | is_array_of_unknown_bound
| 判断是否为未知大小的数组类型。 更多...
struct | is_char_specialized_in_std
| 判断字符类型是否被 ISO C++ 指定提供 `std::char_traits` 的特化。 更多...
struct | is_class_pointer
| 判断指定类型是否是指向类类型的指针。 更多...
struct | is_class_type
| 判断指定类型是否是类类型。 更多...
struct | is_contravariant
| 判断指定类型之间是否逆变。 更多...
struct | is_contravariant< _tResFrom(_tFromParams...), _tResTo(_tToParams...)>
struct | is_contravariant< std::function< _tResFrom(_tFromParams...)>, std::function< _tResTo(_tToParams...)> >
struct | is_contravariant< std::tuple< _tFroms... >, std::tuple< _tTos... > >
struct | is_copyable
struct | is_covariant
| 判断指定类型之间是否协变。 更多...
struct | is_covariant< _tFrom(_tFromParams...), _tTo(_tToParams...)>
struct | is_covariant< std::function< _tFrom(_tFromParams...)>, std::function< _tTo(_tToParams...)> >
struct | is_covariant< std::tuple< _tFroms... >, std::tuple< _tTos... > >
struct | is_cv
| 判断指定类型是否为 const 或 volatile 类型。 更多...
struct | is_decayed
| 判断指定类型是否已退化。 更多...
struct | is_decomposable
| 判断指定类型是否可分解为一个参数为类型的模板和类型参数。 更多...
struct | is_decomposable< _gOp< _types... > >
struct | is_enum_union
struct | is_enum_union< enum_union< _types... > >
struct | is_equal
| 相等关系仿函数。 更多...
struct | is_function_pointer
| 判断指定类型是否是指向函数类型的指针。 更多...
struct | is_future_type
struct | is_future_type< std::future< _type > >
struct | is_in_types
| 判断第一个参数在之后参数指定的类型中出现。 更多...
struct | is_interoperable
| 判断指定类型之间是否可转换。 更多...
struct | is_lvalue_class_reference
| 判断指定类型是否是类类型左值引用。 更多...
struct | is_moveable
struct | is_nonconst_object
| 判断类型是否为非 const 对象类型。 更多...
struct | is_normalizable
| 判断类型是否可满足正规化要求：在 0 和 1 之间存在值进行表示。 更多...
struct | is_normalizable< fixed_point< _tBase, _vInt, _vFrac > >
| is_normalizable 的 fixed_point 特化类型。 更多...
struct | is_nothrow_copyable
struct | is_nothrow_moveable
struct | is_nothrow_swappable
struct | is_nothrow_swappable_with
| 判断是否可以无抛出地调用 `swap` 。 更多...
struct | is_object_or_void
| 判断指定类型是否为对象或 void 类型。 更多...
struct | is_object_pointer
| 判断指定类型是否是指向对象类型的指针。 更多...
struct | is_pod_struct
| 判断指定类型是否是 POD struct 。 更多...
struct | is_pod_union
| 判断指定类型是否是 POD union 。 更多...
struct | is_pointer_to_object
| 判断指定类型是否是指向对象类型的指针。 更多...
struct | is_reference_wrapper
| 判断模板参数指定的类型是否。 更多...
struct | is_reference_wrapper< lref< _type > >
struct | is_reference_wrapper< std::reference_wrapper< _type > >
struct | is_referenceable
| 判断指定类型是否为可引用类型。 更多...
struct | is_returnable
| 判断指定类型是否可作为返回类型。 更多...
struct | is_rvalue_class_reference
| 判断指定类型是否是类类型右值引用。 更多...
struct | is_string_class
| 判断指定类型是否为字符串类类型。 更多...
struct | is_string_like
| 判断指定类型是否为类字符串类型。 更多...
struct | is_swappable
struct | is_swappable_with
| 判断是否可以调用 `swap` 。 更多...
struct | is_trivially_copyable
struct | is_trivially_moveable
struct | is_trivially_replaceable
| 判断是否可平凡替换存储。 更多...
class | lref
| 左值引用包装。 更多...
struct | make_function_type
| 取指定返回类型和元组指定参数类型的函数类型。 更多...
struct | make_function_type< _tRet, std::tuple< _tParams... > >
struct | make_parameter_tuple
| 取参数列表元组。 更多...
struct | make_parameter_tuple< _fCallable & >
struct | make_parameter_tuple< _fCallable && >
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...) const volatile >
struct | make_parameter_tuple< _tRet(_tClass::*)(_tParams...) volatile >
struct | make_parameter_tuple< std::function< _tRet(_tParams...)> >
struct | make_peano_sequence
| 取皮亚诺公理决定的整数序列。 更多...
struct | make_peano_sequence< _tInt, _vBase, 0 >
struct | make_signed_c
| 取指定整数类型和条件表达式对应的有符号或无符号整数类型。 更多...
struct | make_signed_c< _type, false >
struct | make_successor
| 取整数序列的自然数后继。 更多...
struct | make_successor< _tInt, _vBase, integer_sequence< _tInt, _vSeq... > >
struct | make_widen_int
| 位加倍扩展。 更多...
struct | make_widen_int< std::int64_t, _bSigned >
struct | make_widen_int< std::uint64_t, _bSigned >
struct | make_width_int
| 取按指定宽度的整数类型。 更多...
struct | make_width_int< 16U >
struct | make_width_int< 32U >
struct | make_width_int< 64U >
struct | make_width_int< 8U >
class | mapped_set
| 允许指定不同于值类型的键的集合。 更多...
struct | mem_get
| 成员 get 操作。 更多...
struct | mem_get< void >
class | mixin
| 混入对象。 更多...
struct | modular_arithmetic
| 模算术特性：取得不超过模值的最大值。 更多...
struct | modular_arithmetic< fixed_point< _tBase, _vInt, _vFrac > >
| modular_arithmetic 的 fixed_point 特化类型。 更多...
struct | n_tag
| 自然数标记。 更多...
struct | n_tag< 0 >
struct | nested_allocator
| 取嵌套成员分配器类型，若不存在则使用第二模板参数指定的默认类型。 更多...
class | nifty_counter
| 使用引用计数的静态初始化管理器。 更多...
class | noncopyable
| 不可复制对象：禁止派生类调用默认原型的复制构造函数和复制赋值操作符。 更多...
struct | nonesuch
| 不接受任意参数类型构造的类型。 更多...
class | nonmovable
struct | not_
class | nptr
| 可空指针包装：满足 `NullablePointer` 要求同时满足转移后为空。 更多...
struct | nullopt_t
| 无值状态指示。 更多...
class | nullptr_t
| 空指针类。 更多...
struct | object_pack
| 打包的对象：使用 pack_object 得到的对象包装。 更多...
class | observer_ptr
| 观察者指针：无所有权的智能指针。 更多...
class | offsetof_check
| 成员偏移计算静态类型检查。 更多...
struct | one_shot
| 调用一次的函数包装模板。 更多...
struct | one_shot< _func, _tRes, void >
struct | one_shot< _func, void, _tState >
struct | one_shot< _func, void, void >
class | optional
| 可选值对象包装。 更多...
struct | optional_last_value
| 合并可选值序列。 更多...
struct | optional_last_value< void >
struct | or_
struct | or_< _b1 >
struct | or_< _b1, _b2, _bn... >
struct | or_<>
struct | parameter_of
| 取指定索引的参数类型。 更多...
struct | paramlist_size
| 取参数列表大小。 更多...
class | path
| 一般路径模板。 更多...
class | path_traits
| 路径特征。 更多...
class | path_traits< std::basic_string< _tChar, _tAlloc > >
| 文件字符串路径特征。 更多...
struct | pointer_classify
| 指针包装为类类型迭代器。 更多...
struct | pointer_classify< _type * >
class | pointer_iterator
| 指针迭代器。 更多...
class | prototyped_iterator
| 原型迭代器：共享对象引用，在解引用时进行指定的更新操作的随机访问迭代器。 更多...
class | pseudo_iterator
| 伪迭代器。 更多...
struct | pseudo_output
| 伪输出对象。 更多...
struct | raw_tag
| 直接构造类型（直接构造重载用）。 更多...
class | recent_used_list
| 使用双向链表实现的最近使用列表。 更多...
struct | ref_eq
| 引用相等关系仿函数。 更多...
struct | remove_rcv
| 移除可能被 cv-qualifier 修饰的引用类型。 更多...
struct | remove_rp
| 移除指针和引用类型。 更多...
struct | remove_rpcv
| 移除可能被 cv-qualifier 修饰的引用和指针类型。 更多...
struct | return_of
| 取返回类型。 更多...
struct | return_of< _fCallable & >
struct | return_of< _fCallable && >
struct | return_of< _tRet (_tParams...,...) >
struct | return_of< _tRet (_tParams...YPP_Args ) >
struct | return_of< _tRet(*)(_tParams...,...) >
struct | return_of< _tRet(*)(_tParams...YPP_Args ) >
struct | return_of< _tRet(_tClass::*)(_tParams...,...) >
struct | return_of< _tRet(_tClass::*)(_tParams...,...) const >
struct | return_of< _tRet(_tClass::*)(_tParams...,...) const volatile >
struct | return_of< _tRet(_tClass::*)(_tParams...,...) volatile >
struct | return_of< _tRet(_tClass::*)(_tParams...YPP_Args ) >
struct | return_of< _tRet(_tClass::*)(_tParams...YPP_Args ) const >
struct | return_of< _tRet(_tClass::*)(_tParams...YPP_Args ) const volatile >
struct | return_of< _tRet(_tClass::*)(_tParams...YPP_Args ) volatile >
struct | return_of< std::function< _tRet(_tParams...)> >
class | sequence_container_adaptor
| 序列容器适配器。 更多...
struct | standard_layout_storage
| 任意标准布局类型存储。 更多...
class | state_guard
| 使用临时状态暂存对象的作用域守护。 更多...
class | state_guard< _type, void, _tToken >
struct | string_traits
| 字符串特征。 更多...
class | subscriptive_iterator
| 成员下标迭代器。 更多...
class | task_pool
| 任务池：带有队列大小限制的线程池。 更多...
class | temporary_buffer
| 临时缓冲区。 更多...
struct | temporary_buffer_delete
| 使用显式 std::return_temporary_buffer 的删除器。 更多...
struct | temporary_buffer_delete< _type[]>
class | thread_pool
| 线程池。 更多...
class | thunk
| 包装惰性求值的过程。 更多...
class | transformed_iterator
| 变换迭代器。 更多...
class | transposed_iterator
| 下标转置迭代器适配器。 更多...
struct | tuple_find
| 查找类型对应的索引位置，若不存在则为 tuple_not_found 。 更多...
struct | tuple_find< _type, const _tTuple >
struct | tuple_find< _type, const volatile _tTuple >
struct | tuple_find< _type, std::pair< _type1, _type2 > >
struct | tuple_find< _type, std::tuple< _types... > >
struct | tuple_find< _type, volatile _tTuple >
class | tuple_iterator
| 元组迭代器。 更多...
class | type_id_info
| 类型信息。 更多...
class | unimplemented
| 异常：未实现的操作。 更多...
class | unsupported
| 异常：不支持的操作。 更多...
struct | unwrap_reference
| 取引用包装的类型或未被包装的模板参数类型。 更多...
struct | unwrap_reference< lref< _type > >
struct | unwrap_reference< std::reference_wrapper< _type > >
class | used_list_cache
| 按最近使用策略刷新的缓存。 更多...
struct | used_list_cache_traits
| 最近刷新策略的缓存特征。 更多...
struct | used_list_cache_traits< _tKey, _tMapped, void, _tAlloc, _tList >
struct | variadic_param
| 变长参数操作模板。 更多...
struct | variadic_param< 0U >
class | void_ref
| 任意对象引用类型。 更多...
struct | when
| 类似 void_t 的元函数，具有较低匹配优先级，避免偏特化歧义；但使用条件表达式。 更多...
struct | wrapped_enum_traits
struct | wrapped_enum_traits< enum_union< _types... > >
struct | xcrease_t
| 选择自增/自减运算仿函数。 更多...
struct | xcrease_t< false, _tScalar >

## 类型定义

using | byte = unsigned char
| 字节类型。 更多...
using | octet = void
template<typename _type >
using | is_any_cast_dest = or_< is_reference< _type >, is_copy_constructible< _type >>
| 判断类型是否可以作为 any 引用转换的目标。 更多...
using | forward_monomorphic_iterator = any_forward_iterator< void_ref, ptrdiff_t, void *, void_ref >
using | bidirectional_monomorphic_iterator = any_bidirectional_iterator< void_ref, ptrdiff_t, void *, void_ref >
template<class _tMutex = std::mutex, class _tLock = std::unique_lock<_tMutex>>
using | unlock_delete = threading::unlock_delete< _tMutex, _tLock >
| 解锁删除器：默认使用标准库互斥量和锁。 更多...
template<typename _type , class _tMutex = std::mutex, class _tLock = std::unique_lock<_tMutex>>
using | locked_ptr = threading::locked_ptr< _type, _tMutex, _tLock >
| 独占所有权的锁定指针：默认使用标准库互斥量和锁。 更多...
template<class _tAssocCon , typename _tKey , typename... _tParams>
using | is_piecewise_mapped = is_constructible< typename _tAssocCon::value_type, std::piecewise_construct_t, std::tuple< _tKey && >, std::tuple< _tParams &&... >>
| 判断关联容器、键和参数类型是否可以按 map 的方式无转移地构造。 更多...
using | unique_file_ptr = std::unique_ptr< std::FILE, decltype(std::fclose)& >
| 独占所有权的 C 标准库流指针或实现提供的等价类型。 更多...
template<template< typename... > class _gOp, typename _func , typename... _tParams>
using | 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 | id_func_t = make_function_type_t< _type, vseq::join_n_t< _vN, std::tuple< _tParam >>>
| 取指定维数和指定参数类型的多元映射扩展恒等函数类型。 更多...
template<typename _type , size_t _vN = 1>
using | id_func_clr_t = id_func_t< _type, _vN, const _type & >
| 取指定维数和 const 左值引用参数类型的多元映射扩展恒等函数类型。 更多...
template<typename _type , size_t _vN = 1>
using | id_func_rr_t = id_func_t< _type, _vN, _type && >
| 取指定维数和 const 右值引用参数类型的多元映射扩展恒等函数类型。 更多...
template<typename _type >
using | get_less = composed< less< _type * >, composed< addressof_op< _type >, mem_get<>>>
| get 成员小于仿函数。 更多...
template<typename _fCallable , typename... _tParams>
using | future_result_t = std::future< result_of_t< _fCallable &&(_tParams &&...)>>
template<typename _fCallable , typename... _tParams>
using | packed_task_t = std::packaged_task< result_of_t< _fCallable &&(_tParams &&...)>()>
template<typename _tInt , _tInt _vDefault, _tInt... _values>
using | same_value_as = is_same< integer_sequence< _tInt, _vDefault, _values... >, integer_sequence< _tInt, _values..., _vDefault >>
| 判断是否具有相同的指定值。 更多...
template<typename _tIter , typename _tSlave , class _tTraits = std::iterator_traits<_tIter>>
using | pair_iterator = tuple_iterator< _tIter, _tTraits, _tSlave >
| 成对迭代器。 更多...
template<typename _tIter , typename _tTraits = std::iterator_traits<_tIter>>
using | iterator_operators_t = _t< details::iterator_operators< _tIter, _tTraits >>
| 按迭代器类别取可实现迭代器的重载操作符集合的实现。 更多...
template<typename _tParam , typename _type = void, typename = std::pair< indirect_t<_tParam&>, decltype(++std::declval<_tParam&>())>>
using | enable_for_iterator_t = enable_if_t< is_same< decltype(++std::declval< _tParam & >()), _tParam & >::value, _type >
| 选择迭代器类型的特定重载避免和其它类型冲突。 更多...
template<size_t _vFrac, size_t _vInt = 1, bool _bSigned = false>
using | make_fixed_t = fixed_point< conditional_t< _bSigned, typename make_width_int< _vFrac+_vInt >::least_type, typename make_width_int< _vFrac+_vInt >::unsigned_least_type >, _vFrac >
| 取包括指定有效二进制位和至少指定位整数的定点数类型。 更多...
template<typename _type , typename _tCond = bool, typename _tReference = _type&>
using | swap_guard = state_guard< _type, _tCond, _tReference >
| 使用 ADL swap 调用暂存对象的作用域守护。 更多...
template<typename _tParam , typename _type = void>
using | enable_for_string_class_t = enable_if_t< is_string_class< decay_t< _tParam >>::value, _type >
| 选择字符串类类型的特定重载避免和其它非字符串类型冲突。 更多...
using | string_view = basic_string_view< char >
using | u16string_view = basic_string_view< char16_t >
using | u32string_view = basic_string_view< char32_t >
using | wstring_view = basic_string_view< wchar_t >
using | tstring_view = basic_tstring_view< char >
using | u16tstring_view = basic_tstring_view< char16_t >
using | u32tstring_view = basic_tstring_view< char32_t >
using | wtstring_view = basic_tstring_view< wchar_t >
template<typename _type >
using | member_target_type_t = _t< details::member_target_type_impl< _type >>
| 取成员指针类型指向的类类型。 更多...
using | first_tag = n_tag< 0 >
| 第一分量标记。 更多...
using | second_tag = n_tag< 1 >
| 第二分量标记。 更多...
template<typename _tSrc , typename _tDst , typename _type = void>
using | enable_if_replaceable_t = enable_if_t< is_trivially_replaceable< _tSrc, _tDst >::value, _type >
| 选择和特定类型可替换字符类类型的特定重载以避免冲突。 更多...
template<typename _type , size_t _vAlign = std::alignment_of< _type >::value>
using | pun_storage_t = aligned_storage_t< sizeof(_type), _vAlign >
| 显式转换的替代对齐存储对齐存储类型。 更多...
template<typename _type , size_t _vAlign = std::alignment_of< _type >::value>
using | replace_storage_t = standard_layout_storage< pun_storage_t< _type, _vAlign >>
| 显式转换的替代标准布局替代存储类型。 更多...
template<class _type >
using | _t = typename _type::type
| 嵌套类型别名。 更多...
template<bool _b>
using | bool_constant = integral_constant< bool, _b >
| bool 常量。 更多...
template<typename _type >
using | indirect_element_t = remove_reference_t< indirect_t< _type >>
using | input_monomorphic_iterator = any_input_iterator< void_ref, ptrdiff_t, void *, void_ref >
template<typename _tChar , typename _type = void>
using | enable_if_irreplaceable_char_t = enable_if_t< not_< or_< is_trivially_replaceable< _tChar, char >, is_trivially_replaceable< _tChar, wchar_t >>>::value, _type >
| 选择不和 char 或 wchar_t 可替换字符类类型的特定重载以避免冲突。 更多...
using | uchar_t = cond_t< is_trivially_replaceable< wchar_t, char16_t >, char16_t, cond_t< is_trivially_replaceable< wchar_t, char32_t >, char32_t, void >>
| 指定和 `wchar_t` 互相替换存储的非 `char` 内建字符类型。 更多...
template<typename _type >
using | wrapped_enum_traits_t = _t< wrapped_enum_traits< _type >>
template<typename _fCallable >
using | make_parameter_tuple_t = _t< make_parameter_tuple< _fCallable >>
template<typename _fCallable >
using | return_of_t = _t< return_of< _fCallable >>
template<size_t _vIdx, typename _fCallable >
using | parameter_of_t = _t< parameter_of< _vIdx, _fCallable >>
template<typename _tRet , class _tTuple >
using | make_function_type_t = _t< make_function_type< _tRet, _tTuple >>
template<typename _fComp , typename _tDummy , typename _type = void>
using | enable_if_transparent_t = enable_if_t< has_mem_is_transparent< _fComp, _tDummy >::value, _type >
| 移除不满足包含 is_transparent 成员类型比较器的重载。 更多...
template<typename _tInt , _tInt _vBase, class _tSeq >
using | make_successor_t = _t< make_successor< _tInt, _vBase, _tSeq >>
template<typename _tInt , _tInt _vBase, size_t _vN>
using | make_peano_sequence_t = _t< make_peano_sequence< _tInt, _vBase, _vN >>
template<typename _tInt , size_t _vN>
using | make_natural_sequence = make_peano_sequence< _tInt, 0, _vN >
| 取自然数序列。 更多...
template<typename _tInt , size_t _vN>
using | make_natural_sequence_t = _t< make_natural_sequence< _tInt, _vN >>
template<class _tDeleter >
using | deleter_member_pointer_t = typename remove_reference_t< _tDeleter >::pointer
| 取删除器的 `pointer` 成员类型。 更多...
template<typename _type , class _tDeleter >
using | unique_ptr_pointer = detected_or_t< _type *, deleter_member_pointer_t, _tDeleter >
| 取 unique_ptr 包装的指针类型。 更多...
template<typename _tPointer , typename _tDefault = void>
using | defer_element = cond_t< is_void< remove_pointer_t< _tPointer >>, _tDefault, vdefer< indirect_element_t, _tPointer >>
| 取指针对应的元素类型。 更多...
template<typename... _types>
using | wrap_mixin_t = mixin< classify_value_t< _types >... >
| 包装为混入类。 更多...
template<typename _type >
using | unwrap_reference_t = _t< unwrap_reference< _type >>
template<typename _type , typename _tRes = pseudo_output>
using | nonvoid_result_t = cond_t< not_< is_void< _type >>, _type, pseudo_output >
| 若类型不是空类型则取后备结果类型（默认为 pseudo_output ）。 更多...
template<typename _type , typename _tRes = pseudo_output>
using | object_result_t = cond_t< is_object< _type >, _type, pseudo_output >
| 若类型不是对象类型则取后备结果类型（默认为 pseudo_output ）。 更多...
template<typename _type >
using | remove_rcv_t = _t< remove_rcv< _type >>
template<typename _type >
using | underlying_cond_type_t = cond_t< is_enum< _type >, vdefer< underlying_type_t, _type >, _type >
| 取底层类型。 更多...
template<typename _type , typename... _types>
using | common_nonvoid_t = _t< cond_t< is_void< _type >, vdefer< common_type_t, _types... >, identity< _type >>>
| 取公共非空类型：若第一参数为非空类型则为第一参数，否则从其余参数推断。 更多...
template<typename... _types>
using | common_underlying_t = common_type_t< underlying_cond_type_t< _types >... >
| 取公共底层类型。 更多...
template<typename _type , typename... _types>
using | well_formed_t = typename always< _type >::template apply< _types... >::type
| void_t 的一般化，允许指定别名类型。 更多...
template<typename... _types>
using | void_t = well_formed_t< void, _types... >
template<typename... _types>
using | when_valid = well_formed_t< when< true >, _types... >
| 类似 void_t 的元函数，但具有较低匹配优先级，避免偏特化歧义。 更多...
template<bool _bCond>
using | enable_when = enable_if_t< _bCond, when< true >>
| 类似 enable_if_t 的元函数，但具有较低匹配优先级，避免偏特化歧义。 更多...
template<template< typename... > class _gOp, typename... _tParams>
using | is_detected = typename details::detector< nonesuch, void, _gOp, _tParams... >::value_t
template<template< typename... > class _gOp, typename... _tParams>
using | detected_t = _t< details::detector< nonesuch, void, _gOp, _tParams... >>
template<typename _tDefault , template< typename... > class _gOp, typename... _tParams>
using | detected_or = details::detector< _tDefault, void, _gOp, _tParams... >
template<typename _tDefault , template< typename... > class _gOp, typename... _tParams>
using | detected_or_t = _t< detected_or< _tDefault, _gOp, _tParams... >>
template<typename _tExpected , template< typename... > class _gOp, typename... _tParams>
using | is_detected_exact = is_same< _tExpected, detected_t< _gOp, _tParams... >>
template<typename _tTo , template< typename... > class _gOp, typename... _tParams>
using | is_detected_convertible = is_convertible< detected_t< _gOp, _tParams... >, _tTo >
template<typename _tCond , typename _tThen = true_type, typename _tElse = false_type>
using | cond_t = conditional_t< _tCond::value, _tThen, _tElse >
| 条件判断。 更多...
template<class _tClass , typename _tParam , typename _type = void>
using | exclude_self_t = enable_if_t<!is_same< _tClass &, decay_t< _tParam > & >::value, _type >
| 移除选择类类型的特定重载避免构造模板和复制/转移特殊成员函数冲突。 更多...
template<typename _type >
using | identity_t = _t< identity< _type >>
template<typename _type >
using | addrof_t = decltype(&std::declval< _type >())
template<typename _type >
using | indirect_t = decltype(*std::declval< _type >())
template<typename _tFrom , typename _tTo , typename _type = void>
using | enable_if_convertible_t = enable_if_t< is_convertible< _tFrom, _tTo >::value, _type >
template<typename _tFrom , typename _tTo , typename _type = void>
using | enable_if_inconvertible_t = enable_if_t<!is_convertible< _tFrom, _tTo >::value, _type >
template<typename _type1 , typename _type2 , typename _type = void>
using | enable_if_interoperable_t = enable_if_t< is_interoperable< _type1, _type2 >::value, _type >
template<typename _type1 , typename _type2 , typename _type = void>
using | enable_if_same_t = enable_if_t< is_same< _type1, _type2 >::value, _type >

## 枚举

enum | path_category : size_t { path_category::empty, path_category::self, path_category::parent, path_category::node }
| 路径类别。 更多...

## 函数

template<typename _type , typename... _tParams>
auto | unsequenced (_type &&arg, _tParams &&...) -> decltype(std::forward< decltype(arg)>(arg))
| 无序列依赖表达式组求值实现。 更多...
template<typename _tIn , typename _fPred >
bool | fast_all_of (_tIn first, _tIn last, _fPred pred)
| 快速序列判断操作。 更多...
template<typename _tIn , typename _fPred >
bool | fast_any_of (_tIn first, _tIn last, _fPred pred)
template<typename _tIn , typename _fPred >
bool | fast_none_of (_tIn first, _tIn last, _fPred pred)
template<typename _tIn , typename _tOut , typename _fPred , typename _fOp >
_tOut | transform_when (_tIn first, _tOut result, _fPred pred, _fOp op)
| 变换满足谓词的序列的连续元素。 更多...
template<typename _tIn , typename _tOut , typename _fPred >
_tOut | copy_when (_tIn first, _tOut result, _fPred pred)
| 复制满足谓词的序列的连续元素。 更多...
template<typename _fOp , typename _tOut , typename... _tIns>
void | transform_n (_fOp op, _tOut result, size_t n, _tIns...iters)
| 指定数量的序列变换。 更多...
template<typename _type >
_type * | trivially_fill_n (_type *first, size_t n=1, byte value={})
| 填充字节序列。 更多...
template<typename _type >
void | trivially_fill (_type *first, _type *last, byte value={})
template<typename _tRandom >
_tRandom | sort_unique (_tRandom first, _tRandom last)
| 排序指定序列范围，保留不重复元素的区间。 更多...
template<class _tMap , typename _tKey , typename _func , typename... _tParams>
auto | cache_lookup (_tMap &cache, const _tKey &key, _func init, _tParams &&...args) -> decltype((cache.begin() ->second))
| 以指定的关键字查找作为缓存的无序关联容器， 若没有找到使用指定的可调用对象和参数初始化内容。 更多...
void | yassert (const char *, const char *, int, const char *)
| YBase 默认断言函数。 更多...
void | ytrace (std::FILE *, std::uint8_t, std::uint8_t, const char *, int, const char *,...)
| YCLib 调试跟踪函数。 更多...
template<typename _tSrc , typename _tDst = const decay_t<_tSrc>&&>
_tDst | qualify (_tSrc &&arg)
| 允许添加限定符转换。 更多...
template<typename _pDst , class _tSrc >
_pDst | polymorphic_cast (_tSrc *v)
| 多态类指针类型转换。 更多...
bool | isdigit (char c)
| 区域无关的 std::isdigit 实现。 更多...
std::string | to_string (const std::thread::id &)
| 转换 `thread::id` 为字符串表示。 更多...
std::string | get_this_thread_id ()
| 取当前线程标识的字符串表示。 更多...
template<class _tCon , typename _tElem >
_tCon | make_container (std::initializer_list< _tElem > il)
template<typename _tCon , typename _tIn >
_tCon::const_iterator | insert_reversed (_tCon &con, typename _tCon::const_iterator i, _tIn first, _tIn last)
| 逆向插入范围到容器的指定位置。 更多...
template<typename _tCon , typename... _tParams>
void | seq_insert (_tCon &con, _tParams &&...args)
| 顺序插入值至指定容器。 更多...
template<class _tCon >
void | sort_unique (_tCon &con)
| 排序指定序列容器，保留不重复元素。 更多...
template<class _tCon >
bool | pop_back_val (_tCon &con, const typename _tCon::value_type &value)
| 若容器末尾存在指定值的元素则移除。 更多...
template<class _tCon >
bool | pop_front_val (_tCon &con, const typename _tCon::value_type &value)
| 若容器起始存在指定值的元素则移除。 更多...
template<class _tVector , typename _func >
_tVector | retry_for_vector (typename _tVector::size_type s, _func f)
| 从第一参数指定的起始缓冲区大小循环取向量结果，按需扩大缓冲区。 更多...
template<class _tAssocCon , typename _tKey , typename _func >
auto | replace_value (_tAssocCon &con, const _tKey &k, _func f) -> decltype(con.emplace_hint(con.erase(con.find(k)), f(*con.find(k))))
| 替换关联容器的值。 更多...
int | setnbuf (std::FILE *stream)
| 关闭流缓冲。 更多...
bool | fexists (const char *)
| 判断指定路径的文件是否存在。 更多...
size_t | strlen_n (const char *s)
| 带空指针检查的字符串长度计算。 更多...
char * | strcpy_n (char *d, const char *s)
| 带空指针检查的字符串复制。 更多...
char * | strcpycat (char *, const char *, const char *)
| 带空指针检查的字符串连接。 更多...
char * | strcatdup (const char *, const char *, void *(*)(size_t)=std::malloc)
| 带空指针检查的字符串连接复制。 更多...
template<typename _tChar >
int | ntctscmp (const _tChar *s1, const _tChar *s2, size_t n)
template<typename _tChar >
int | ntctscmp (const _tChar *s1, const _tChar *s2, size_t n1, size_t n2)
template<typename _tChar >
int | ntctsicmp (const _tChar *s1, const _tChar *s2)
| 按字典序比较简单 NTCTS （忽略大小写）。 更多...
template<typename _tChar >
int | ntctsicmp (const _tChar *s1, const _tChar *s2, size_t n)
| 按字典序比较不超过指定长度的简单 NTCTS （忽略大小写）。 更多...
template<typename _tChar >
_tChar * | ntctscpy (_tChar *s1, const _tChar *s2, size_t n)
| 复制确定源长度的 NTCTS 。 更多...
template<typename _tChar >
_tChar * | ntctsmove (_tChar *s1, const _tChar *s2, size_t n)
| 转移 NTCTS 。 更多...
template<typename _tChar >
size_t | ntctsfind (const _tChar *s, size_t n, _tChar c)
| 在简单 NTCTS 的指定前若干字符内查找字符。 更多...
template<typename _tChar >
size_t | ntctslen (const _tChar *s)
| 计算简单 NTCTS 长度。 更多...
template<typename _tChar >
size_t | ntctslen (const _tChar *s, size_t n)
| 计算不超过指定长度的简单 NTCTS 长度。 更多...
template<typename _tIter >
bool | is_undereferenceable (const _tIter &)
template<typename _type >
bool | is_undereferenceable (_type *p)
template<typename _func >
void | iterate_exceptions (_func &&f, std::exception_ptr p=std::current_exception())
| 迭代处理异常。 更多...
template<class _tEx >
std::exception_ptr | get_nested_exception_ptr (const _tEx &e)
| 取嵌套异常指针。 更多...
template<typename _type >
void | raise_exception (_type &&e)
| 引发异常：若当前存在正在处理的异常则抛出嵌套异常，否则抛出异常。 更多...
template<typename _tEx , typename _func , typename _tExCaught = remove_cv_t<_tEx>&>
void | handle_nested (_tEx &e, _func &&f)
| 处理嵌套异常。 更多...
template<size_t _vN, typename... _tParams>
auto | varg (_tParams &&...args) -> decltype(variadic_param< _vN >::get(std::forward< decltype(args)>(args)...))
| 取指定位置的变长参数。 更多...
template<typename _func , typename... _tParams>
void | unseq_apply (_func &&f, _tParams &&...args)
| 无序调用。 更多...
template<typename _fCallable , typename... _tParams>
result_of_t< _fCallable &&(_tParams &&...)> | invoke (_fCallable &&f, _tParams &&...args)
| 调用可调用对象。 更多...
template<typename _fCallable , typename... _tParams>
nonvoid_result_t< result_of_t< _fCallable &&(_tParams &&...)> > | invoke_nonvoid (_fCallable &&f, _tParams &&...args)
| 调用可调用对象，保证返回值非空。 更多...
template<typename _func , typename _func2 , typename... _tParams>
auto | bind_forward (_func &&f, _func2 &&f2, _tParams &&...args) -> decltype(ystdex::bind1(std::forward< decltype(f)>(f), std::bind(std::forward< decltype(f2)>(f2), std::placeholders::_2, std::forward< decltype(args)>(args)...)))
| 复合调用 ystdex::bind1 和 std::placeholders::_2 以实现值的设置。 更多...
template<typename _type , typename _fCallable , typename... _tParams>
auto | call_for_value (_type &&val, _fCallable &&f, _tParams &&...args) -> common_nonvoid_t< result_of_t< _fCallable &&(_tParams &&...)>, _type >
| 调用第二个参数起指定的函数对象，若返回空类型则使用第一个参数的值为返回值。 更多...
template<typename _func , class _tTuple >
auto | apply (_func &&f, _tTuple &&args) -> decltype(call_projection< _tTuple, make_index_sequence< std::tuple_size< decay_t< _tTuple >>::value >>::call(std::forward< decltype(f)>(f), std::forward< decltype(args)>(args)))
| 应用函数对象和参数元组。 更多...
template<typename _fCond , typename _fCallable , typename... _tParams>
result_of_t< _fCallable &&(_tParams &&...)> | retry_on_cond (_fCond cond, _fCallable &&f, _tParams &&...args)
| 循环重复调用：代替直接使用 do-while 语句以避免过多引入作用域外的变量。 更多...
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 _type >
void | hash_combine (size_t &seed, const _type &val)
| 重复计算散列。 更多...
template<typename _tChar , class _tTraits >
void | setstate (std::basic_ios< _tChar, _tTraits > &ios, std::ios_base::iostate state)
| 设置流状态。 更多...
template<typename _tChar , class _tTraits >
void | rethrow_badstate (std::basic_ios< _tChar, _tTraits > &ios, std::ios_base::iostate state=std::ios_base::badbit)
| 设置流状态并重新抛出当前异常。 更多...
template<typename _type , typename _tChar , class _tTraits >
bool | stream_equal (std::basic_istream< _tChar, _tTraits > &a, std::basic_istream< _tChar, _tTraits > &b)
| 比较指定流的内容相等。 更多...
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 _type , typename... _tParams>
void | construct_in (_type &obj, _tParams &&...args)
| 原地构造。 更多...
template<typename _type >
void | destruct_in (_type &obj)
| 原地析构。 更多...
template<typename _tIter >
void | destruct (_tIter i)
| 析构迭代器指向的对象。 更多...
template<typename _tIter >
void | destruct_range (_tIter first, _tIter last)
| 析构d迭代器范围内的对象序列。 更多...
template<typename _type >
_type * | get_raw (_type *const &p)
template<typename _type , typename _fDeleter >
auto | get_raw (const std::unique_ptr< _type, _fDeleter > &p) -> decltype(p.get())
template<typename _type >
_type * | get_raw (const std::shared_ptr< _type > &p)
template<typename _type >
_type * | get_raw (const std::weak_ptr< _type > &p)
template<typename _type >
bool | reset (std::unique_ptr< _type > &p)
template<typename _type >
bool | reset (std::shared_ptr< _type > &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 , typename _tDeleter , typename _pSrc >
std::unique_ptr< _type, _tDeleter > | unique_raw (_pSrc *p, _tDeleter &&d)
template<typename _type , typename _tDeleter >
std::unique_ptr< _type, _tDeleter > | unique_raw (_type *p, _tDeleter &&d)
template<typename _type >
std::unique_ptr< _type > | unique_raw (nullptr_t)
template<typename _type , typename... _tParams>
std::shared_ptr< _type > | share_raw (_type *p, _tParams &&...args)
template<typename _type , typename _pSrc , typename... _tParams>
std::shared_ptr< _type > | share_raw (_pSrc &&p, _tParams &&...args)
template<typename _type >
std::shared_ptr< _type > | share_raw (nullptr_t)
template<typename _type , class... _tParams>
enable_if_t< sizeof...(_tParams)!=0, std::shared_ptr< _type > > | share_raw (nullptr_t, _tParams &&...args)
template<typename _type , typename _tValue >
std::unique_ptr< _type > | make_unique (std::initializer_list< _tValue > il)
| 使用指定类型的初始化列表构造指定类型的 std::unique_ptr 对象。 更多...
template<typename _type , typename _tValue >
std::shared_ptr< _type > | make_shared (std::initializer_list< _tValue > il)
| 使用指定类型的初始化列表构造指定类型的 std::shared_ptr 对象。 更多...
template<typename _tAlloc >
std::unique_ptr< _tAlloc, allocator_delete< _tAlloc > > | make_allocator_guard (_tAlloc &alloc, typename std::allocator_traits< _tAlloc >::size_type n=1)
| 构造分配器守护。 更多...
template<typename _type >
void | swap (observer_ptr< _type > &p1, observer_ptr< _type > &p2)
template<typename _type >
observer_ptr< _type > | make_observer (_type *p)
template<typename _type >
_type | pow_int (_type x, size_t n)
| 计算整数次幂。 更多...
template<typename _type >
_type | square (_type x)
| 计算平方。 更多...
template<typename _type >
_type | cube (_type x)
| 计算立方。 更多...
template<typename _type >
_type | quad (_type x)
| 计算四次方。 更多...
template<typename _func , typename _type = void>
std::shared_ptr< _type > | share_guard (_func f, _type *p={})
| 创建共享作用域守护。 更多...
template<typename _type >
const _type & | set_value_move (const _type &x)
| 转移集合元素。 更多...
template<typename _tChar , class _tTraits >
bool | streambuf_equal (std::basic_streambuf< _tChar, _tTraits > &a, std::basic_streambuf< _tChar, _tTraits > &b)
| 比较指定流缓冲区的内容相等。 更多...
template<class _tRange >
auto | string_end (_tRange &c) -> decltype(c.end())
template<class _tRange >
auto | string_end (const _tRange &c) -> decltype(c.end())
template<typename _type >
size_t | string_length (const _type *str)
| 计算字符串长度。 更多...
template<typename _type >
auto | string_length (const _type &str) -> decltype(size(str))
template<typename _tElem >
size_t | string_length (std::initializer_list< _tElem > il)
template<class _tString >
_tString && | restrict_length (_tString &&str, const typename string_traits< _tString >::size_type n)
| 限制长度不超过指定参数。 更多...
template<class _tString >
_tString | alph (_tString &str)
| 取字母表：有序的字符串的不重复序列。 更多...
template<class _tString >
void | concat (_tString &str, size_t n)
| 重复串接。 更多...
template<typename _type , typename _tString , typename... _tParams>
_type | ston (const _tString &str, _tParams &&...args)
| 转换表示数的字符串。 更多...
template std::string | sfmt< char > (const char *,...)
| 显式实例化：以 C 标准输出格式的输出 std::string 对象。 更多...
template<typename _type , typename _tString , typename _func >
bool | filter_prefix (const _tString &str, const _type &prefix, _func f)
| 过滤前缀：存在前缀时处理移除前缀后的子串。 更多...
template<typename _type , typename _tString >
_tString | cond_prefix (const _tString &str, const _type &prefix, _tString &&val={})
| 选择性过滤前缀。 更多...
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 _type >
enable_if_t<!has_overloaded_addressof< _type >::value, _type * > | constfn_addressof (_type &r)
| 尝试对非重载 operator& 提供 constexpr 的 std::addressof 替代。 更多...
template<typename _type , typename = enable_if_t<has_overloaded_addressof<_type>::value>>
_type * | constfn_addressof (_type &r)
template<typename _type >
enable_if_t< or_< is_object< _type >, is_void< _type > >::value, void * > | pvoid (_type *p)
| 取 `void*` 类型的指针。 更多...
template<typename _type >
enable_if_t< is_function< _type >::value, void * > | pvoid (_type *p)
template<typename _type >
void * | pvoid_ref (_type &&ref)
template<typename _tIn , typename _fPred >
bool | strict_all_of (_tIn first, _tIn last, _fPred pred)
| 严格序列判断操作。 更多...
template<typename _tIn , typename _fPred >
bool | strict_any_of (_tIn first, _tIn last, _fPred pred)
template<typename _tIn , typename _fPred >
bool | strict_none_of (_tIn first, _tIn last, _fPred pred)
template<typename _tIn , typename _func , typename _type >
_func | for_each_equal (_tIn first, _tIn last, const _type &value, _func f)
template<typename _tIn , typename _func , typename _fPred >
_func | for_each_if (_tIn first, _tIn last, _fPred pred, _func f)
template<typename _fPred , typename _fInsert , typename _tIn >
void | split (_tIn b, _tIn e, _fPred is_delim, _fInsert insert)
| 以指定分隔符分割序列。 更多...
template<typename _fPred , typename _fInsert , typename _func , typename _tIn >
void | split_if (_tIn b, _tIn e, _fPred is_delim, _fInsert insert, _func pred)
| 以满足迭代器谓词的指定分隔符分割序列。 更多...
template<typename _fPred , typename _fInsert , typename _tIn >
_tIn | split_l (_tIn b, _tIn e, _fPred is_delim, _fInsert insert)
| 以指定分隔符分割保留起始分隔符的序列。 更多...
template<typename _type >
_type * | trivially_copy_n (const _type *first, size_t n, _type *result)
| 复制不覆盖的序列。 更多...
template<typename _type >
_type * | trivially_copy (const _type *first, const _type *last, _type *result)
template<class _type >
_type * | trivially_move_n (const _type *first, size_t n, _type *result)
| 复制可能覆盖的序列。 更多...
template<class _type >
_type * | trivially_move (const _type *first, const _type *last, _type *result)
template<typename _tFwd >
_tFwd | stable_unique (_tFwd first, _tFwd last)
| 去除迭代器指定的范围中的重复元素，且不改变元素之间的相对顺序。 更多...
template<typename _tFwd , typename _fPred >
_tFwd | stable_unique (_tFwd first, _tFwd last, _fPred pred)
template<typename _type , typename _fComp = less<_type>>
const _type & | min (const _type &a, const _type &b, _fComp comp=less< _type >())
| 取较小的元素。 更多...
template<typename _type , typename _fComp = less<_type>>
const _type & | min (std::initializer_list< _type > t, _fComp comp=less< _type >(), size_t n=0)
template<typename _type , typename _fComp = less<_type>>
const _type & | max (const _type &a, const _type &b, _fComp comp=less< _type >())
| 取较大的元素。 更多...
template<typename _type , typename _fComp = less<_type>>
const _type & | max (std::initializer_list< _type > t, _fComp comp=less< _type >(), size_t n=0)
template<typename _type , typename _fComp = less<>>
const _type & | clamp (const _type &v, const _type &lo, const _type &hi, _fComp comp=_fComp())
| 取约束范围的值。 更多...
template<typename _tIn , typename _tOut , typename _fComp = less<>>
_tOut | clamp_range (_tIn first, _tIn last, _tOut result, const typename std::iterator_traits< _tIn >::value_type &lo, const typename std::iterator_traits< _tIn >::value_type &hi, _fComp comp=_fComp())
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 _type , size_t _vN, typename _tSrcElement >
std::array< _type, _vN > | to_array (std::initializer_list< _tSrcElement > il)
template<typename _pDst , class _tSrc >
_pDst | polymorphic_downcast (_tSrc *v)
| 多态类指针向派生类指针转换。 更多...
template<typename _rDst , class _tSrc >
enable_if_t< is_lvalue_reference< _rDst >::value, _rDst > | polymorphic_downcast (_tSrc &v)
template<typename _rDst , class _tSrc >
enable_if_t< is_rvalue_reference< _rDst >::value &&!is_reference< _tSrc >::value, _rDst > | polymorphic_downcast (_tSrc &&v)
template<class _tDst , typename _tSrc , typename _tDeleter >
enable_if_t<!is_reference< _tDst >::value &&!is_array< _tDst >::value, std::unique_ptr< _tDst, _tDeleter > > | polymorphic_downcast (std::unique_ptr< _tSrc, _tDeleter > &&v)
template<class _tDst , typename _tSrc >
enable_if_t<!is_reference< _tDst >::value &&!is_array< _tDst >::value, std::shared_ptr< _tDst > > | polymorphic_downcast (const std::unique_ptr< _tSrc > &v)
template<typename _pDst , class _tSrc >
_pDst | polymorphic_crosscast (_tSrc *v)
| 多态类指针交叉转换。 更多...
template<typename _rDst , class _tSrc >
_rDst | polymorphic_crosscast (_tSrc &v)
template<typename _rDst , class _tSrc >
enable_if_t<!is_reference< _tSrc >::value, _rDst > | polymorphic_crosscast (_tSrc &&v)
template<typename _tDst , typename _tSrc >
_tDst | general_cast (_tSrc *v)
| 一般类型转换。 更多...
template<typename _tDst , typename _tSrc >
_tDst | general_cast (_tSrc &v)
template<typename _tDst , typename _tSrc >
const _tDst | general_cast (const _tSrc &v)
bool | iscntrl_C0 (char c)
| 判断指定字符是否为 ISO/IEC 2022 定义的 C0 控制字符。 更多...
bool | iscntrl_C1 (char c)
| 判断指定字符是否为 ISO/IEC 2022 定义的 C1 控制字符。 更多...
bool | iscntrl_ASCII (char c)
| 使用 US-ASCII 字符集的 std::isprint 实现。 更多...
bool | iscntrl_ISO8859_11 (char c)
| 使用 ISO/IEC 8859-11(Latin/Thai) 字符集的 std::iscntrl 实现。 更多...
bool | iscntrl_ISO8859_1 (char c)
| 使用 ISO/IEC 8859-1 字符集的 std::iscntrl 实现。 更多...
bool | isprint_ASCII (char c)
| 使用 US-ASCII 字符集的 std::isprint 实现。 更多...
bool | isprint_ISO8859_1 (char c)
| 使用 ISO/IEC 8859-1 字符集的 std::isprint 实现。 更多...
bool | isprint (char c)
| 区域无关的 std::isprint 实现。 更多...
template<typename _tChar >
_tChar | tolower (_tChar c)
| 转换大小写字符。 更多...
char | tolower (char c)
template<typename _tChar >
_tChar | toupper (_tChar c)
char | toupper (char c)
template<class _tSeqCon >
bool | operator!= (const container_adaptor< _tSeqCon > &x, const container_adaptor< _tSeqCon > &y)
| 满足容器要求。 更多...
template<class _tSeqCon >
void | swap (container_adaptor< _tSeqCon > &x, container_adaptor< _tSeqCon > &y)
template<class _tSeqCon >
bool | operator!= (const sequence_container_adaptor< _tSeqCon > &x, const sequence_container_adaptor< _tSeqCon > &y)
| 满足容器要求。 更多...
template<class _tSeqCon >
void | swap (sequence_container_adaptor< _tSeqCon > &x, sequence_container_adaptor< _tSeqCon > &y)
template<class _tCon , typename _tIter >
_tCon | make_container (_tIter first, _tIter last)
| 构造指定类型的容器。 更多...
template<class _tCon , typename _tRange >
_tCon | make_container (_tRange &&c)
template<class _tCon , typename _tRange , typename _func >
_tCon | make_container (_tRange &&c, _func f)
template<typename _tRange >
auto | range_size (const _tRange &c) -> decltype(details::range_size(c, details::has_range_size< _tRange >()))
| 取范围大小。 更多...
template<typename _tElem >
size_t | range_size (std::initializer_list< _tElem > il)
template<class _tCon , typename... _tParams>
void | assign (_tCon &con, _tParams &&...args)
| 插入参数指定的元素到容器。 更多...
template<class _tCon , typename _type , size_t _vN>
void | assign (_tCon &con, const _type(&arr)[_vN])
template<class _tCon , typename _tIn >
void | concat (_tCon &con, _tIn first, _tIn last)
| 插入元素到容器末尾。 更多...
template<class _tCon , typename _tRange >
void | concat (_tCon &con, _tRange &&c)
template<class _tCon , typename _tKey >
bool | exists (const _tCon &con, const _tKey &key)
| 判断指定的容器中存在指定的键。 更多...
template<typename _tCon , typename _tIter >
void | erase_all (_tCon &con, _tIter first, _tIter last)
| 删除指定容器中指定区间中的或全部元素。 更多...
template<typename _tCon , typename _tIter , typename _type >
void | erase_all (_tCon &con, _tIter first, _tIter last, const _type &value)
template<typename _tCon , typename _type >
void | erase_all (_tCon &con, const _type &value)
template<typename _tCon , typename _tIter , typename _fPred >
void | erase_all_if (_tCon &con, _tIter first, _tIter last, _fPred pred)
| 删除指定容器中指定区间中的或全部满足谓词的元素。 更多...
template<typename _tCon , typename _fPred >
void | erase_all_if (_tCon &con, _fPred pred)
template<class _tAssocCon , typename _tKey >
bool | erase_first (_tAssocCon &con, const _tKey &k)
| 删除指定关联容器中等价于指定键的起始元素。 更多...
template<class _tAssocCon >
_tAssocCon::size_type | erase_multi (_tAssocCon &con, const typename _tAssocCon::key_type &k)
| 删除指定关联容器中等价于指定键的所有元素。 更多...
template<class _tAssocCon , typename _tKey >
_tAssocCon::size_type | erase_multi (_tAssocCon &con, const _tKey &k)
template<typename _tCon >
_tCon::const_iterator | erase_n (_tCon &con, typename _tCon::const_iterator i, typename _tCon::difference_type n)
| 删除指定容器中指定迭代器起始指定数量的元素。 更多...
template<typename _tCon >
_tCon::iterator | erase_n (_tCon &con, typename _tCon::iterator i, typename _tCon::difference_type n)
template<class _tCon >
_tCon::iterator | cast_mutable (_tCon &con, typename _tCon::const_iterator i)
| 移除 const_iterator 的 const 限定。 更多...
template<class _tCon , typename _type >
std::pair< typename _tCon::iterator, _type > | cast_mutable (_tCon &con, const std::pair< typename _tCon::const_iterator, _type > &pr)
template<class _tCon >
_tCon && | trail (_tCon &&con, const typename decay_t< _tCon >::value_type &value={})
| 保证非空容器以参数指定的元素结尾。 更多...
template<class _tCon , typename... _tParams>
_tCon && | trail (_tCon &&con, _tParams &&...args)
template<class _tVector , typename _tIn >
void | vector_concat (_tVector &vec, _tIn first, _tIn last)
| 插入元素到 `vector` 末尾。 更多...
template<class _tVector , typename _tRange >
void | vector_concat (_tVector &vec, _tRange &&c)
template<class _tAssocCon , typename _tKey , typename... _tParams>
enable_if_t< is_piecewise_mapped< _tAssocCon, _tKey, _tParams... >::value, typename _tAssocCon::iterator > | emplace_hint_in_place (_tAssocCon &con, typename _tAssocCon::const_iterator hint, _tKey &&k, _tParams &&...args)
| 带有提示的原地插入构造。 更多...
template<class _tAssocCon , typename _tKey , typename... _tParams>
enable_if_t<!is_piecewise_mapped< _tAssocCon, _tKey, _tParams... >::value, typename _tAssocCon::iterator > | emplace_hint_in_place (_tAssocCon &con, typename _tAssocCon::const_iterator hint, _tKey &&, _tParams &&...args)
template<class _tAssocCon , typename _type , typename = enable_if_convertible_t<const _type&, const typename _tAssocCon::value_type&>>
const _tAssocCon::key_type & | extract_key (const _type &val)
| 从关联容器的值取键。 更多...
template<class _tAssocCon , typename _tKey , typename = enable_if_inconvertible_t<const _tKey&, const typename _tAssocCon::value_type&>>
const _tKey & | extract_key (const _tKey &k)
template<class _tAssocCon , typename _tKey >
std::pair< typename _tAssocCon::const_iterator, bool > | search_map (const _tAssocCon &con, const _tKey &k)
| 按指定键搜索指定关联容器。 更多...
template<class _tAssocCon , typename _tKey >
std::pair< typename _tAssocCon::iterator, bool > | search_map (_tAssocCon &con, const _tKey &k)
template<class _tAssocCon , typename _tKey >
std::pair< typename _tAssocCon::const_iterator, bool > | search_map (const _tAssocCon &con, typename _tAssocCon::const_iterator hint, const _tKey &k)
| 按指定键和提示的迭代器位置搜索指定关联容器。 更多...
template<class _tAssocCon , typename _tKey >
std::pair< typename _tAssocCon::iterator, bool > | search_map (_tAssocCon &con, typename _tAssocCon::const_iterator hint, const _tKey &k)
template<typename _func , class _tAssocCon , typename... _tParams>
std::pair< typename _tAssocCon::const_iterator, bool > | search_map (_func f, const _tAssocCon &con, _tParams &&...args)
| 按指定键值搜索指定映射并执行操作。 更多...
template<typename _func , class _tAssocCon , typename... _tParams>
std::pair< typename _tAssocCon::iterator, bool > | search_map (_func f, _tAssocCon &con, _tParams &&...args)
template<class _tAssocCon , typename _tKey , typename... _tParams>
std::pair< typename _tAssocCon::iterator, bool > | try_emplace (_tAssocCon &con, _tKey &&k, _tParams &&...args)
template<class _tAssocCon , typename _tKey , typename... _tParams>
std::pair< typename _tAssocCon::iterator, bool > | try_emplace_hint (_tAssocCon &con, typename _tAssocCon::const_iterator hint, _tKey &&k, _tParams &&...args)
template<class _tAssocCon , typename _tKey , typename _tParam >
std::pair< typename _tAssocCon::iterator, bool > | insert_or_assign (_tAssocCon &con, _tKey &&k, _tParam &&arg)
template<class _tAssocCon , typename _tKey , typename _tParam >
std::pair< typename _tAssocCon::iterator, bool > | insert_or_assign_hint (_tAssocCon &con, typename _tAssocCon::const_iterator hint, _tKey &&k, _tParam &&arg)
void | restore_signal (int sig)
| 调用 `signal` 重置默认信号处理器。 更多...
void | reraise (int sig)
| 调用 restore_signal 重置默认信号处理器后调用 `raise` 引发信号。 更多...
template<size_t _vWidth, typename _tIn >
make_width_int< _vWidth >::unsigned_type | pack_uint (_tIn first, _tIn last)
| 使用迭代器对指定的范围中的字节表示的序列构造无符号整数。 更多...
template<size_t _vWidth, typename _tOut >
void | unpack_uint (typename ystdex::make_width_int< _vWidth >::unsigned_type value, _tOut result)
| 分解无符号整数到迭代器对指定的字节范围。 更多...
template<size_t _vWidth>
make_width_int< _vWidth >::unsigned_type | read_uint_be (const byte *buf)
| 从字节缓冲区读取指定宽的大端序无符号整数。 更多...
template<size_t _vWidth>
make_width_int< _vWidth >::unsigned_type | read_uint_le (const byte *buf)
| 从字节缓冲区读取指定宽的小端序无符号整数。 更多...
template<size_t _vWidth>
void | write_uint_be (byte *buf, typename make_width_int< _vWidth >::unsigned_type val)
| 向字节缓冲区写入指定宽的大端序无符号整数。 更多...
template<size_t _vWidth>
void | write_uint_le (byte *buf, typename make_width_int< _vWidth >::unsigned_type val)
| 向字节缓冲区写入指定宽的小端序无符号整数。 更多...
size_t | vfmtlen (const char *, std::va_list)
| 计算指定格式字符串输出的占用的字节数。 更多...
size_t | vfmtlen (const wchar_t *, std::va_list)
const char * | openmode_conv (std::ios_base::openmode)
| ISO C/C++ 标准输入输出接口打开模式转换。 更多...
std::ios_base::openmode | openmode_conv (const char *)
| ISO C/C++ 标准输入输出接口打开模式转换。 更多...
template<typename _tChar >
bool | is_null (_tChar c)
| 使用 `std::char_traits::eq` 判断是否为空字符。 更多...
template<typename _tChar >
int | ntctscmp (const _tChar *s1, const _tChar *s2)
| 按字典序比较简单 NTCTS 。 更多...
int | ntctscmp (const char *s1, const char *s2)
int | ntctscmp (const wchar_t *s1, const wchar_t *s2)
int | ntctscmp (const uchar_t *s1, const uchar_t *s2)
template<typename _tChar >
enable_if_irreplaceable_char_t< _tChar, _tChar * > | ntctscpy (_tChar *s1, const _tChar *s2)
| 复制 NTCTS 。 更多...
char * | ntctscpy (char *s1, const char *s2)
wchar_t * | ntctscpy (wchar_t *s1, const wchar_t *s2)
wchar_t * | ntctscpy (uchar_t *s1, const uchar_t *s2)
template<typename _tChar , typename = enable_if_replaceable_t<_tChar, char>>
_tChar * | ntctscpy (_tChar *s1, const _tChar *s2)
template<typename _tChar >
enable_if_replaceable_t< _tChar, wchar_t, _tChar * > | ntctscpy (_tChar *s1, const _tChar *s2)
template<typename _tChar >
enable_if_irreplaceable_char_t< _tChar, _tChar * > | ntctsncpy (_tChar *s1, const _tChar *s2, size_t n)
| 复制不超过指定长度的 NTCTS 。 更多...
char * | ntctsncpy (char *s1, const char *s2, size_t n)
wchar_t * | ntctsncpy (wchar_t *s1, const wchar_t *s2, size_t n)
wchar_t * | ntctsncpy (uchar_t *s1, const uchar_t *s2, size_t n)
template<typename _tChar , typename = enable_if_replaceable_t<_tChar, char>>
_tChar * | ntctsncpy (_tChar *s1, const _tChar *s2, size_t n)
template<typename _tChar >
enable_if_replaceable_t< _tChar, wchar_t, _tChar * > | ntctsncpy (_tChar *s1, const _tChar *s2, size_t n)
template<typename _tChar >
_tChar * | ntctschr (_tChar *s, remove_const_t< _tChar > c)
| 在简单 NTCTS 内查找字符。 更多...
char * | ntctschr (char *s, char c)
const char * | ntctschr (const char *s, char c)
wchar_t * | ntctschr (wchar_t *s, wchar_t c)
const wchar_t * | ntctschr (const wchar_t *s, wchar_t c)
uchar_t * | ntctschr (uchar_t *s, uchar_t c)
const uchar_t * | ntctschr (const uchar_t *s, uchar_t c)
template<typename _tChar >
size_t | const_ntctslen (const _tChar *s)
| 计算简单 NTCTS 长度。 更多...
template<typename _tChar >
size_t | const_ntctscnt (const _tChar *s, _tChar c)
| 计算简单 NTCTS 中的指定字符数。 更多...
template<typename _tChar >
std::char_traits< _tChar >::int_type | const_ntctscmp (const _tChar *s1, const _tChar *s2)
| 比较简单 NTCTS 。 更多...
template<typename _tChar >
std::char_traits< _tChar >::int_type | const_ntctscmp (const _tChar *s1, const _tChar *s2, size_t n)
| 比较不超过指定长度的简单 NTCTS 。 更多...
template<typename _tChar >
size_t | const_ntctsfind (const _tChar *s, _tChar c)
| 在简单 NTCTS 中顺序查找指定字符。 更多...
template<typename _tChar >
size_t | const_ntctsfind (const _tChar *s, _tChar c, size_t n)
| 在简单 NTCTS 中顺序查找第指定次数出现的指定字符。 更多...
template<typename _tChar >
size_t | const_ntctsfind (const _tChar *s1, const _tChar *s2)
| 在简单 NTCTS 中顺序查找作为子串的指定 NTCTS 。 更多...
template<typename _tChar , typename _tSize , class _tTraits = std::char_traits<_tChar>, _tSize _vNPos = _tSize(-1)>
_tSize | str_find (const _tChar *p, _tSize sz, _tChar c, _tSize pos)
| 查找字符或子串。 更多...
template<typename _tChar , typename _tSize , class _tTraits = std::char_traits<_tChar>, _tSize _vNPos = _tSize(-1)>
_tSize | str_find (const _tChar *p, _tSize sz, const _tChar *s, _tSize pos, _tSize n)
template<typename _tChar , typename _tSize , class _tTraits = std::char_traits<_tChar>, _tSize _vNPos = _tSize(-1)>
_tSize | str_rfind (const _tChar *p, _tSize sz, _tChar c, _tSize pos)
template<typename _tChar , typename _tSize , class _tTraits = std::char_traits<_tChar>, _tSize _vNPos = _tSize(-1)>
_tSize | str_rfind (const _tChar *p, _tSize sz, const _tChar *s, _tSize pos, _tSize n)
template<typename _tChar , typename _tSize , class _tTraits = std::char_traits<_tChar>, _tSize _vNPos = _tSize(-1)>
_tSize | str_find_first_of (const _tChar *p, _tSize sz, const _tChar *s, _tSize pos, _tSize n)
template<typename _tChar , typename _tSize , class _tTraits = std::char_traits<_tChar>, _tSize _vNPos = _tSize(-1)>
_tSize | str_find_last_of (const _tChar *p, _tSize sz, const _tChar *s, _tSize pos, _tSize n)
template<typename _tChar , typename _tSize , class _tTraits = std::char_traits<_tChar>, _tSize _vNPos = _tSize(-1)>
_tSize | str_find_first_not_of (const _tChar *p, _tSize sz, _tChar c, _tSize pos)
template<typename _tChar , typename _tSize , class _tTraits = std::char_traits<_tChar>, _tSize _vNPos = _tSize(-1)>
_tSize | str_find_first_not_of (const _tChar *p, _tSize sz, const _tChar *s, _tSize pos, _tSize n)
template<typename _tChar , typename _tSize , class _tTraits = std::char_traits<_tChar>, _tSize _vNPos = _tSize(-1)>
_tSize | str_find_last_not_of (const _tChar *p, _tSize sz, _tChar c, _tSize pos)
template<typename _tChar , typename _tSize , class _tTraits = std::char_traits<_tChar>, _tSize _vNPos = _tSize(-1)>
_tSize | str_find_last_not_of (const _tChar *p, _tSize sz, const _tChar *s, _tSize pos, _tSize n)
bool | iswprint (wchar_t)
| 区域无关的 std::isprint 实现。 更多...
bool | iswspace (wchar_t)
| 区域无关的 std::iswspace 实现。 更多...
bool | iswgraph (wchar_t wc)
| 区域无关的 std::iswgraph 实现。 更多...
template<typename _tOther , typename _type >
auto | nonnull_or (_type p, _tOther &&other={}) -> decltype(p?p:other)
| 取非空引用或默认值。 更多...
template<typename _tOther , typename _type , typename _tNull = nullptr_t>
auto | nonnull_or (_type p, _tOther &&other, _tNull null) -> decltype(!bool(p==null)?p:other)
template<typename _tOther , typename _type >
auto | value_or (_type p, _tOther &&other={}) -> decltype(p?*p:other)
| 取非空值或默认值。 更多...
template<typename _tOther , typename _type , typename _tSentinal = nullptr_t>
auto | value_or (_type p, _tOther &&other, _tSentinal last) -> decltype(!bool(p==last)?*p:other)
template<typename _tOther , typename _func , typename _type >
auto | call_value_or (_func f, _type p, _tOther &&other={}) -> decltype(p?f(*p):other)
| 调用非空值或取默认值。 更多...
template<typename _tOther , typename _func , typename _type , typename _tSentinal = nullptr_t>
auto | call_value_or (_func f, _type p, _tOther &&other, _tSentinal last) -> decltype(!bool(p==last)?f(*p):other)
template<class _type = std::system_error, typename... _tParams>
void | throw_error (std::error_code ec, _tParams &&...args)
| 抛出错误： std::system_error 或允许相同构造函数参数的异常。 更多...
template<class _type = std::system_error, typename... _tParams>
void | throw_error (std::error_condition cond, _tParams &&...args)
template<class _type = std::system_error, typename... _tParams>
void | throw_error (int ev, _tParams &&...args)
template<class _type = std::system_error, typename... _tParams>
void | throw_error (int ev, const std::error_category &ecat, _tParams &&...args)
template<typename... _tParams>
size_t | sizeof_params (_tParams &&...)
| 统计函数参数列表中的参数个数。 更多...
template<typename _func >
void | chain_apply (_func &&f)
| 顺序链式调用。 更多...
template<typename _func , typename _type , typename... _tParams>
void | chain_apply (_func &&f, _type &&arg, _tParams &&...args)
template<typename _func >
void | seq_apply (_func &&)
| 顺序递归调用。 更多...
template<typename _func , typename _type , typename... _tParams>
void | seq_apply (_func &&f, _type &&arg, _tParams &&...args)
template<typename _func , typename... _tParams>
auto | bind1 (_func &&f, _tParams &&...args) -> decltype(std::bind(std::forward< decltype(f)>(f), std::placeholders::_1, std::forward< decltype(args)>(args)...))
| 复合调用 std::bind 和 std::placeholders::_1 。 更多...
template<typename _tRes , typename _func , typename... _tParams>
auto | bind1 (_func &&f, _tParams &&...args) -> decltype(std::bind< _tRes >(std::forward< decltype(f)>(f), std::placeholders::_1, std::forward< decltype(args)>(args)...))
template<typename _func1 , typename _func2 , typename... _funcs>
auto | compose (_func1 f, _func2 g, _funcs...args) -> decltype(ystdex::compose(ystdex::compose(f, g), args...))
template<typename _type >
std::future< decay_t< _type > > | make_ready_future (_type &&val)
std::future< void > | make_ready_future ()
template<typename _type >
std::future< _type > | make_ready_future (std::exception_ptr p)
template<typename _fCallable , typename... _tParams>
packed_task_t< _fCallable &&, _tParams &&... > | pack_task (_fCallable &&f, _tParams &&...args)
template<typename _fCallable , typename... _tParams>
std::shared_ptr< packed_task_t< _fCallable &&, _tParams &&... > > | pack_shared_task (_fCallable &&f, _tParams &&...args)
template<typename _type >
size_t | hash_combine_seq (size_t seed, const _type &val)
| 重复计算序列散列。 更多...
template<typename _type , typename... _tParams>
size_t | hash_combine_seq (size_t seed, const _type &val, const _tParams &...args)
template<typename _tIn >
size_t | hash_range (size_t seed, _tIn first, _tIn last)
| 重复对范围计算散列。 更多...
template<typename _tIn >
size_t | hash_range (_tIn first, _tIn last)
template<typename _tIter >
auto | operator| (_tIter &&i, first_tag) -> decltype(make_transform(std::forward< decltype(i)>(i), iterator_transformation::first<>()))
| 管道匹配操作符。 更多...
template<typename _tIter >
auto | operator| (_tIter &&i, second_tag) -> decltype(make_transform(std::forward< decltype(i)>(i), iterator_transformation::second<>()))
template<typename _tIter >
auto | operator| (_tIter &&i, get_indirect_t) -> decltype(make_transform(std::forward< decltype(i)>(i), iterator_transformation::indirect<>()))
template<typename _tIter >
auto | operator| (_tIter &&i, get_get_t) -> decltype(make_transform(std::forward< decltype(i)>(i), iterator_transformation::get<>()))
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 _tIter >
std::reverse_iterator< _tIter > | make_reverse_iterator (_tIter i)
| 构造反向迭代器。 更多...
template<typename _tIter1 , typename _tIter2 >
auto | make_move_iterator_pair (_tIter1 it1, _tIter2 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(c.begin(), c.end()))
| 构造指定序列范围（包含序列容器及内建数组等）的转移迭代器对。 更多...
template<typename _tIter , typename... _tParams>
void | construct (_tIter i, _tParams &&...args)
| 使用指定参数在迭代器指定的位置构造对象。 更多...
template<typename _tIter , typename... _tParams>
void | construct_range (_tIter first, _tIter last, _tParams &&...args)
| 使用指定的参数重复构造迭代器范围内的对象序列。 更多...
template<typename _tFwd , typename... _tParams>
void | uninitialized_construct (_tFwd first, _tFwd last, _tParams &&...args)
| 在迭代器指定的未初始化的范围上构造对象。 更多...
template<typename _tFwd , typename _tSize , typename... _tParams>
void | uninitialized_construct_n (_tFwd first, _tSize n, _tParams &&...args)
template<typename _type , class _tAlloc = std::allocator<indirect_element_t<_type>>>
auto | clone_monomorphic (const _type &p, _tAlloc &&a=_tAlloc()) -> decltype(std::addressof(*p))
| 使用分配器复制指定指针指向的对象。 更多...
template<class _type >
auto | clone_polymorphic (const _type &p) -> decltype(std::addressof(*p))
| 使用 `clone` 成员函数复制指定指针指向的多态类类型对象。 更多...
template<typename _type , typename... _tParams>
enable_if_t<!is_array< _type >::value, std::unique_ptr< _type > > | make_unique_default_init ()
template<typename _type , typename... _tParams>
enable_if_t< is_array< _type >::value &&extent< _type >::value==0, std::unique_ptr< _type > > | make_unique_default_init (size_t size)
template<typename _type , typename... _tParams>
enable_if_t< extent< _type >::value!=0 > | make_unique_default_init (_tParams &&...)=delete
template<typename _type , typename _tDeleter , typename... _tParams>
enable_if_t<!is_array< _type >::value, std::unique_ptr< _type > > | make_unique_with (_tDeleter &&d)
template<typename _type , typename _tDeleter , typename... _tParams>
enable_if_t< is_array< _type >::value &&extent< _type >::value==0, std::unique_ptr< _type > > | make_unique_with (_tDeleter &&d, size_t size)
template<typename _type , typename _tDeleter , typename... _tParams>
enable_if_t< extent< _type >::value!=0 > | make_unique_with (_tDeleter &&, _tParams &&...)=delete
template<typename _tDst , typename _type >
std::unique_ptr< _tDst > | static_pointer_cast (std::unique_ptr< _type > p)
| 智能指针转换。 更多...
template<typename _tDst , typename _type , typename _tDeleter >
std::unique_ptr< _tDst, _tDeleter > | static_pointer_cast (std::unique_ptr< _type, _tDeleter > p)
template<typename _tDst , typename _type >
std::unique_ptr< _tDst > | dynamic_pointer_cast (std::unique_ptr< _type > &p)
template<typename _tDst , typename _type >
std::unique_ptr< _tDst > | dynamic_pointer_cast (std::unique_ptr< _type > &&p)
template<typename _tDst , typename _type , typename _tDeleter >
std::unique_ptr< _tDst, _tDeleter > | dynamic_pointer_cast (std::unique_ptr< _type, _tDeleter > &p)
template<typename _tDst , typename _type , typename _tDeleter >
std::unique_ptr< _tDst, _tDeleter > | dynamic_pointer_cast (std::unique_ptr< _type, _tDeleter > &&p)
template<typename _tDst , typename _type >
std::unique_ptr< _tDst > | const_pointer_cast (std::unique_ptr< _type > p)
template<typename _tDst , typename _type , typename _tDeleter >
std::unique_ptr< _tDst, _tDeleter > | const_pointer_cast (std::unique_ptr< _type, _tDeleter > p)
template<typename _type1 , typename _type2 >
bool | operator== (observer_ptr< _type1 > p1, observer_ptr< _type2 > p2)
template<typename _type1 , typename _type2 >
bool | operator!= (observer_ptr< _type1 > p1, observer_ptr< _type2 > p2)
template<typename _type1 , typename _type2 >
bool | operator< (observer_ptr< _type1 > p1, observer_ptr< _type2 > p2)
template<typename _type , typename... _tParams>
auto | pack_object (_tParams &&...args) -> decltype(details::pack_obj_impl< _type >::pack(std::forward< decltype(args)>(args)...))
| 打包对象：通过指定参数构造对象。 更多...
template<typename _type >
bool | operator== (const optional< _type > &x, const optional< _type > &y)
| 关系和比较操作。 更多...
template<typename _type >
bool | operator== (const optional< _type > &x, nullopt_t)
template<typename _type >
bool | operator== (const optional< _type > &x, const _type &v)
template<typename _type >
bool | operator< (const optional< _type > &x, const optional< _type > &y)
template<typename _type >
void | swap (optional< _type > &x, optional< _type > &y)
template<typename _type >
optional< decay_t< _type > > | make_optional (_type &&v)
template<typename _type , typename... _tParams>
optional< _type > | make_optional_inplace (_tParams &&...args)
| 使用指定参数构造指定 optional 实例的值。 更多...
template<typename _type >
_type & | ref_opt (optional< _type > &&o)
| 从 optional 实例的临时对象取左值引用。 更多...
template<typename _type >
_type & | ref_opt ()
template<class _tRange >
auto | size (const _tRange &c) -> decltype(c.size())
| 类容器访问。 更多...
template<typename _type , size_t _vN>
size_t | size (const _type(&)[_vN])
template<typename _tElem >
size_t | size (std::initializer_list< _tElem > il)
template<class _tRange >
auto | empty (const _tRange &c) -> decltype(c.empty())
template<typename _type , size_t _vN>
bool | empty (const _type(&)[_vN])
template<typename _type , size_t _vN>
bool | empty (const _type(&&)[_vN])
template<typename _tElem >
bool | empty (std::initializer_list< _tElem > il)
template<typename _tRange >
auto | data (_tRange &c) -> decltype(c.data())
template<typename _tRange >
auto | data (const _tRange &c) -> decltype(c.data())
template<typename _type , size_t _vN>
_type * | data (_type(&array)[_vN])
template<typename _type , size_t _vN>
_type * | data (_type(&&array)[_vN])
template<typename _tElem >
const _tElem * | data (std::initializer_list< _tElem > il)
template<typename _type >
enable_if_t< is_floating_point< _type >::value, bool > | is_zero (_type x)
| 判断指定的值是否为零值。 更多...
template<typename _type , typename = enable_if_t<!is_floating_point<_type>::value>>
bool | is_zero (_type x)
template<typename _type >
_type | round_in_nocheck (_type x, _type err)
| 指定误差内舍入。 更多...
template<typename _type >
_type | round_in (_type x, _type err)
template<typename _type >
lref< _type > | ref (_type &t)
| 构造引用包装。 更多...
template<class _type >
void | ref (const _type &&)=delete
template<typename _type >
lref< const _type > | cref (const _type &t)
template<class _type >
void | cref (const _type &&)=delete
template<typename _type >
_type & | unref (_type &&x)
| 解除引用包装。 更多...
template<typename _type >
_type & | unref (const lref< _type > &x)
template<bool _bNoThrow = true, typename _type >
guard< _type > | make_guard (_type f)
template<bool _bNoThrow = true, typename _type >
guard< one_shot< _type > > | unique_guard (_type f)
template<class _tRange >
auto | string_begin (_tRange &c) -> decltype(c.begin())
template<class _tRange >
auto | string_begin (const _tRange &c) -> decltype(c.begin())
template<typename _tChar >
_tChar * | string_begin (_tChar *str)
template<typename _tElem >
auto | string_begin (std::initializer_list< _tElem > il) -> decltype(il.begin())
template<typename _tChar >
_tChar * | string_end (_tChar *str)
template<typename _tElem >
auto | string_end (std::initializer_list< _tElem > il) -> decltype(il.end())
template<typename _tRange1 , typename _tRange2 , typename _fPred >
bool | begins_with (const _tRange1 &input, const _tRange2 &test, _fPred comp)
| 判断第一个参数指定的串是否以第二个参数起始。 更多...
template<typename _tRange1 , typename _tRange2 >
bool | begins_with (const _tRange1 &input, const _tRange2 &test)
template<typename _tRange1 , typename _tRange2 , typename _fPred >
bool | ends_with (const _tRange1 &input, const _tRange2 &test, _fPred comp)
| 判断第一个参数指定的串是否以第二个参数结束。 更多...
template<typename _tRange1 , typename _tRange2 >
bool | ends_with (const _tRange1 &input, const _tRange2 &test)
template<class _tString , typename _type >
bool | exists_substr (const _tString &str, const _type &sub)
| 判断是否存在子串。 更多...
template<class _tString , typename _type >
bool | exists_substr (const _tString &str, const typename _tString::value_type *p_sub)
template<class _tString >
auto | normalize (_tString &str) -> decltype(str.resize(ystdex::ntctslen(str.c_str())))
| NTCTS 正规化：保留空字符之前的字符。 更多...
template<class _tString , typename = ystdex::enable_for_string_class_t<_tString>>
_tString && | ntctsncpy (_tString &&str, const typename string_traits< _tString >::const_pointer s, const typename string_traits< _tString >::size_type n)
| 复制不超过指定长度的 NTCTS 。 更多...
template<class _tString , typename = ystdex::enable_for_string_class_t<_tString>>
_tString && | ntctsncpy (_tString &&str, _tString &&s, const typename string_traits< _tString >::size_type n)
template<class _tString >
enable_if_t< is_class< decay_t< _tString > >::value, _tString && > | erase_left (typename string_traits< _tString >::size_type pos, _tString &&str)
| 删除字符串中指定的连续字符左侧的字符串。 更多...
template<class _tString >
enable_if_t< is_class< decay_t< _tString > >::value, _tString && > | erase_left (_tString &&str, typename string_traits< _tString >::value_type c)
template<class _tString >
enable_if_t< is_class< decay_t< _tString > >::value, _tString && > | erase_left (_tString &&str, const remove_reference_t< _tString > &t)
template<class _tString >
enable_if_t< is_class< decay_t< _tString > >::value, _tString && > | erase_left (_tString &&str, typename string_traits< _tString >::const_pointer t=&to_array< typename string_traits< _tString >::value_type >(" \f\n\r\t\v")[0])
template<class _tString >
enable_if_t< is_class< decay_t< _tString > >::value, _tString && > | erase_right (typename string_traits< _tString >::size_type pos, _tString &&str)
| 删除字符串中指定的连续字符右侧的字符串。 更多...
template<class _tString >
enable_if_t< is_class< decay_t< _tString > >::value, _tString && > | erase_right (_tString &&str, typename string_traits< _tString >::value_type c)
template<class _tString >
enable_if_t< is_class< decay_t< _tString > >::value, _tString && > | erase_right (_tString &&str, const remove_reference_t< _tString > &t)
template<class _tString >
enable_if_t< is_class< decay_t< _tString > >::value, _tString && > | erase_right (_tString &&str, typename string_traits< _tString >::const_pointer t=&to_array< typename string_traits< _tString >::value_type >(" \f\n\r\t\v")[0])
template<class _tString >
_tString && | ltrim (_tString &&str, typename string_traits< _tString >::value_type c)
| 删除字符串中指定的连续前缀字符。 更多...
template<class _tString >
_tString && | ltrim (_tString &&str, const _tString &t)
template<class _tString >
_tString && | ltrim (_tString &&str, typename string_traits< _tString >::const_pointer t=&to_array< typename string_traits< _tString >::value_type >(" \f\n\r\t\v")[0])
template<class _tString >
_tString && | rtrim (_tString &&str, typename string_traits< _tString >::value_type c)
| 删除字符串中指定的连续后缀字符。 更多...
template<class _tString >
_tString && | rtrim (_tString &&str, const remove_reference_t< _tString > &t)
template<class _tString >
_tString && | rtrim (_tString &&str, typename string_traits< _tString >::const_pointer t=&to_array< typename string_traits< _tString >::value_type >(" \f\n\r\t\v")[0])
template<class _tString >
_tString && | trim (_tString &&str, typename string_traits< _tString >::value_type c)
| 删除字符串中指定的连续前缀与后缀字符。 更多...
template<class _tString >
_tString && | trim (_tString &&str, const _tString &t)
template<class _tString >
_tString && | trim (_tString &&str, typename string_traits< _tString >::const_pointer t=&to_array< typename string_traits< _tString >::value_type >(" \f\n\r\t\v")[0])
template<typename _tString , typename... _tParams>
_tString | find_prefix (const _tString &str, _tParams &&...args)
| 取前缀子字符串。 更多...
template<typename _tString , typename... _tParams>
_tString | find_suffix (const _tString &str, _tParams &&...args)
| 取后缀子字符串。 更多...
template<typename _tString >
string_traits< _tString >::value_type | get_quote_mark_nonstrict (const _tString &str)
| 取相同的前缀和后缀元素。 更多...
template<typename _tString >
_tString | quote (const _tString &str, typename string_traits< _tString >::value_type c=typename string_traits< _tString >::value_type('"'))
| 取添加前缀和后缀的字符串。 更多...
template<typename _tString , typename _tString2 >
enable_if_t<!is_convertible< _tString2, typename string_traits< _tString >::value_type >::value,_tString > | quote (const _tString &str, const _tString2 &s)
template<typename _tString , typename _tPrefix , typename _tSuffix >
_tString | quote (const _tString &str, const _tPrefix &pfx, const _tSuffix &sfx)
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)
template<typename _tChar , class _tTraits , class _tAlloc , typename _func >
std::basic_istream< _tChar, _tTraits > & | extract (std::basic_istream< _tChar, _tTraits > &is, std::basic_string< _tChar, _tTraits, _tAlloc > &str, _func f)
| 从输入流中取字符串。 更多...
template<typename _tChar , class _tTraits , class _tAlloc >
std::basic_istream< _tChar, _tTraits > & | extract_line (std::basic_istream< _tChar, _tTraits > &is, std::basic_string< _tChar, _tTraits, _tAlloc > &str, _tChar delim)
template<typename _tChar , class _tTraits , class _tAlloc >
std::basic_istream< _tChar, _tTraits > & | extract_line (std::basic_istream< _tChar, _tTraits > &is, std::basic_string< _tChar, _tTraits, _tAlloc > &str)
template<typename _tChar , class _tTraits , class _tAlloc >
std::basic_istream< _tChar, _tTraits > & | extract_line_cr (std::basic_istream< _tChar, _tTraits > &is, std::basic_string< _tChar, _tTraits, _tAlloc > &str, _tChar delim_cr= '\r', _tChar delim= '\n')
| 同 `ystdex::extract_line` ，但允许分隔符包含附加的前缀字符。 更多...
template<typename _tChar , class _tString >
std::basic_ostream< _tChar, typename _tString::traits_type > & | write (std::basic_ostream< _tChar, typename _tString::traits_type > &os, const _tString &str, typename _tString::size_type pos=0, typename _tString::size_type n=_tString::npos)
| 非格式输出。 更多...
template<typename _tChar , class _tTraits , size_t _vN>
std::basic_ostream< _tChar, _tTraits > & | write (std::basic_ostream< _tChar, _tTraits > &os, const _tChar(&s)[_vN])
template<typename _tChar , class _tTraits , size_t _vN>
std::basic_ostream< _tChar, _tTraits > & | write_literal (std::basic_ostream< _tChar, _tTraits > &os, const _tChar(&s)[_vN])
std::string | to_string (unsigned char val)
| 转换为字符串： std::basic_string 的实例对象。 更多...
std::string | to_string (unsigned short val)
template<typename _type >
enable_if_t< is_enum< _type >::value, std::string > | to_string (_type val)
template<typename _type , class _tStream = std::ostringstream>
enable_if_t< is_class< _type >::value, decltype(std::declval< _tStream & >).str())> | to_string (const _type &x)
std::wstring | to_wstring (unsigned char val)
std::wstring | to_wstring (unsigned short val)
template<typename _type >
enable_if_t< is_enum< _type >::value, std::wstring > | to_wstring (_type val)
template<typename _type , class _tStream = std::wostringstream>
enable_if_t< is_class< _type >::value, decltype(std::declval< _tStream & >).str())> | to_wstring (const _type &x)
template<typename _tChar , class _tString = std::basic_string<_tChar>>
_tString | vsfmt (const _tChar *fmt, std::va_list args)
| 以 C 标准输出格式的输出 std::basic_string 实例的对象。 更多...
template<typename _tChar >
auto | sfmt (const _tChar *fmt,...) -> decltype(vsfmt(fmt, std::declval< std::va_list >()))
| 以 C 标准输出格式的输出 std::basic_string 实例的对象。 更多...
template<typename _tChar , class _tTraits >
bool | operator== (basic_string_view< _tChar, _tTraits > x, basic_string_view< _tChar, _tTraits > y)
template<typename _tChar , class _tTraits >
bool | operator== (basic_string_view< _tChar, _tTraits > x, decay_t< basic_string_view< _tChar, _tTraits >> y)
template<typename _tChar , class _tTraits >
bool | operator== (decay_t< basic_string_view< _tChar, _tTraits >> x, basic_string_view< _tChar, _tTraits > y)
template<typename _tChar , class _tTraits >
bool | operator< (basic_string_view< _tChar, _tTraits > x, basic_string_view< _tChar, _tTraits > y)
template<typename _tChar , class _tTraits >
bool | operator< (basic_string_view< _tChar, _tTraits > x, decay_t< basic_string_view< _tChar, _tTraits >> y)
template<typename _tChar , class _tTraits >
bool | operator< (decay_t< basic_string_view< _tChar, _tTraits >> x, basic_string_view< _tChar, _tTraits > y)
template<typename _tChar , class _tTraits >
std::basic_ostream< _tChar, _tTraits > & | operator<< (std::basic_ostream< _tChar, _tTraits > &os, basic_string_view< _tChar, _tTraits > str)
template<typename _tChar , class _tTraits >
bool | operator== (basic_tstring_view< _tChar, _tTraits > x, basic_tstring_view< _tChar, _tTraits > y)
template<typename _tChar , class _tTraits >
bool | operator== (basic_tstring_view< _tChar, _tTraits > x, decay_t< basic_tstring_view< _tChar, _tTraits >> y)
template<typename _tChar , class _tTraits >
bool | operator== (decay_t< basic_tstring_view< _tChar, _tTraits >> x, basic_tstring_view< _tChar, _tTraits > y)
template<typename _tChar , class _tTraits >
bool | operator< (basic_tstring_view< _tChar, _tTraits > x, basic_tstring_view< _tChar, _tTraits > y)
template<typename _tChar , class _tTraits >
bool | operator< (basic_tstring_view< _tChar, _tTraits > x, decay_t< basic_tstring_view< _tChar, _tTraits >> y)
template<typename _tChar , class _tTraits >
bool | operator< (decay_t< basic_tstring_view< _tChar, _tTraits >> x, basic_tstring_view< _tChar, _tTraits > y)
template<typename _tChar , class _tTraits >
std::basic_ostream< _tChar, _tTraits > & | operator<< (std::basic_ostream< _tChar, _tTraits > &os, basic_tstring_view< _tChar, _tTraits > str)
static const auto | tuple_not_found (size_t(-1))
| 表示没有找到的索引。 更多...
template<typename _pDst , typename _tSrc >
ystdex::enable_if_t< and_< is_object_pointer< _pDst >, is_aligned_compatible< _tSrc, remove_pointer_t< _pDst > > >::value, _pDst > | aligned_cast (_tSrc *v)
| 保证对齐兼容的显式转换。 更多...
template<typename _rDst , typename _tSrc , typename = ystdex::enable_if_t< and_<is_reference<_rDst>, is_aligned_compatible<remove_reference_t<_tSrc>, remove_reference_t<_rDst>>>::value>>
auto | aligned_cast (_tSrc &&v) -> decltype(std::forward< decltype(reinterpret_cast< _rDst >(v))>(reinterpret_cast< _rDst >(v)))
template<typename _pDst , typename _tSrc >
ystdex::enable_if_t< and_< is_object_pointer< _pDst >, is_aligned_storable< _tSrc, remove_pointer_t< _pDst > > >::value, _pDst > | aligned_store_cast (_tSrc *v)
| 保证对齐存储的显式转换。 更多...
template<typename _rDst , typename _tSrc , typename = ystdex::enable_if_t< and_<is_reference<_rDst>, is_aligned_storable<remove_reference_t<_tSrc>, remove_reference_t<_rDst>>>::value>>
auto | aligned_store_cast (_tSrc &&v) -> decltype(std::forward< decltype(reinterpret_cast< _rDst >(v))>(reinterpret_cast< _rDst >(v)))
template<typename _pDst , typename _tSrc >
ystdex::enable_if_t< and_< is_object_pointer< _pDst >, is_aligned_replaceable< _tSrc, remove_pointer_t< _pDst > > >::value, _pDst > | aligned_replace_cast (_tSrc *v)
| 保证对齐替换存储的显式转换。 更多...
template<typename _rDst , typename _tSrc , typename = ystdex::enable_if_t< and_<is_reference<_rDst>, is_aligned_replaceable<remove_reference_t<_tSrc>, remove_reference_t<_rDst>>>::value>>
auto | aligned_replace_cast (_tSrc &&v) -> decltype(std::forward< decltype(reinterpret_cast< _rDst >(v))>(reinterpret_cast< _rDst >(v)))
template<typename _pDst , typename _tSrc >
ystdex::enable_if_t< and_< is_object_pointer< _pDst >, is_trivially_replaceable< _tSrc, remove_pointer_t< _pDst > > >::value, _pDst > | replace_cast (_tSrc *v)
| 保证平凡替换存储的显式转换。 更多...
template<typename _rDst , typename _tSrc , typename = ystdex::enable_if_t< and_<is_reference<_rDst>, is_trivially_replaceable<remove_reference_t<_tSrc>, remove_reference_t<_rDst>>>::value>>
auto | replace_cast (_tSrc &&v) -> decltype(std::forward< decltype(reinterpret_cast< _rDst >(v))>(reinterpret_cast< _rDst >(v)))
template<typename _type >
const type_info & | type_id ()

## 变量

const 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 {}
const struct ystdex::get_indirect_t | get_indirect
const struct ystdex::get_get_t | get_get
const struct ystdex::in_place_t | in_place
const struct ystdex::nullopt_t | nullopt
template<typename _type = void, typename... _tParams>
using | common_array_t = std::array< common_nonvoid_t< _type, decay_t< _tParams >... >, sizeof...(_tParams)>
| 取指定类型和参数类型推断的 `std::array` 实例。 更多...
template<typename _type = void, typename... _tParams>
common_array_t< _type, _tParams... > | cast_array (_tParams &&...args)
| 构造指定参数转换初始化的 `std::array` 对象。 更多...
template<typename _type = void, typename... _tParams>
common_array_t< _type, _tParams... > | forward_as_array (_tParams &&...args)
| 转移指定参数至 `std::array` 对象。 更多...
template<typename _type = void, typename... _tParams>
common_array_t< _type, _tParams... > | make_array (_tParams &&...args)
| 构造指定参数初始化的 `std::array` 对象。 更多...
enum | byte_order { byte_order::unknown = 0, byte_order::neutral = 1, byte_order::little = 2, byte_order::big = 3, byte_order::PDP = 4 }
| 字节序。 更多...
byte_order | native_byte_order ()
| 测试本机字节序。 更多...
bool | native_little_bit_order ()
| 测试本机位序。 更多...
template<typename _type >
using | classify_value_t = cond_t< std::is_class< _type >, _type, boxed_value< _type >>
| 包装非类类型为类类型。 更多...
const struct ystdex::default_init_t | default_init
template<typename _type >
add_const_t< _type > & | as_const (_type &t)
| 转换 const 引用。 更多...
template<typename _type >
void | swap_underlying (_type &x, _type &y)
| 交换相同标准布局类型可修改左值的存储。 更多...
template<typename _type >
enable_if_convertible_t< _type, decay_t< _type >, decay_t< _type > > | decay_copy (_type &&arg)
| 退化复制。 更多...
template<typename _type , typename = enable_if_t<is_enum<_type>::value>>
underlying_type_t< _type > | underlying (_type val)
| 取枚举值的底层整数。 更多...
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)...))&
| 取非类型标识和初始化调用指定的对象。 更多...

## 详细描述

<functional> 特性测试宏。

自从
  build 175

参见
  WG21 P0096R1 3.5 。
  https://blogs.msdn.microsoft.com/vcblog/2015/06/19/c111417-features-in-vs-2015-rtm/ 。

自从
  build 679

## 类型定义说明

template<typename _type >

using ystdex::addrof_t = typedef decltype(&std::declval<_type>())

自从
  build 669

在文件 type_traits.hpp 第 975 行定义.

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

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

using ystdex::byte = typedef unsigned char

字节类型。

注解
  ISO C++ 对访问存储的 glvalue 的类型有严格限制，当没有对象生存期保证时， 仅允许（可能 cv 修饰的） char 和 unsigned char 及其指针/引用或 void* ， 而不引起未定义行为(undefined behavior) 。 由于 char 的算术操作行为是否按有符号处理未指定，使用 unsigned char 表示字节以便获得确定的行为，同时对字符处理（如 std::fgetc ）保持较好的兼容性。

自从
  build 209

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

template<typename _tDefault , template< typename... > class _gOp, typename... _tParams>

using ystdex::detected_or = typedef details::detector<_tDefault, void, _gOp, _tParams...>

在文件 type_traits.hpp 第 674 行定义.

template<typename _tDefault , template< typename... > class _gOp, typename... _tParams>

using ystdex::detected_or_t = typedef _t<detected_or<_tDefault, _gOp, _tParams...>>

在文件 type_traits.hpp 第 678 行定义.

template<template< typename... > class _gOp, typename... _tParams>

using ystdex::detected_t = typedef _t<details::detector<nonesuch, void, _gOp, _tParams...>>

在文件 type_traits.hpp 第 670 行定义.

template<template< typename... > class _gOp, typename _func , typename... _tParams>

using ystdex::enable_fallback_t = typedef enable_if_t<!is_detected<_gOp, _tParams&&...>::value, decltype(std::declval<_func>()(std::declval<_tParams&&>()...))>

启用备用重载。

自从
  build 651

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

template<typename _tFrom , typename _tTo , typename _type = void>

using ystdex::enable_if_convertible_t = typedef enable_if_t<is_convertible<_tFrom, _tTo>::value, _type>

参见
  enable_if_t

自从
  build 575

在文件 type_traits.hpp 第 993 行定义.

template<typename _tFrom , typename _tTo , typename _type = void>

using ystdex::enable_if_inconvertible_t = typedef enable_if_t<!is_convertible<_tFrom, _tTo>::value, _type>

自从
  build 679

在文件 type_traits.hpp 第 998 行定义.

template<typename _type1 , typename _type2 , typename _type = void>

using ystdex::enable_if_interoperable_t = typedef enable_if_t<is_interoperable<_type1, _type2>::value, _type>

在文件 type_traits.hpp 第 1002 行定义.

template<typename _type1 , typename _type2 , typename _type = void>

using ystdex::enable_if_same_t = typedef enable_if_t<is_same<_type1, _type2>::value, _type>

自从
  build 614

在文件 type_traits.hpp 第 1007 行定义.

template<typename _fComp , typename _tDummy , typename _type = void>

using ystdex::enable_if_transparent_t = typedef enable_if_t<has_mem_is_transparent<_fComp, _tDummy>::value, _type>

移除不满足包含 is_transparent 成员类型比较器的重载。

参见
  enable_if_t
  has_mem_is_transparent
  WG21 N3657 。

自从
  build 679

在文件 functor.hpp 第 86 行定义.

template<bool _bCond>

using ystdex::enable_when = typedef enable_if_t<_bCond, when<true>>

类似 enable_if_t 的元函数，但具有较低匹配优先级，避免偏特化歧义。

参见
  enable_if_t
  when

自从
  build 649

在文件 type_traits.hpp 第 608 行定义.

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

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

template<typename _fCallable , typename... _tParams>

using ystdex::future_result_t = typedef std::future<result_of_t<_fCallable&&(_tParams&&...)>>

自从
  build 623

在文件 future.hpp 第 86 行定义.

template<typename _type , size_t _vN = 1>

using ystdex::id_func_clr_t = typedef id_func_t<_type, _vN, const _type&>

取指定维数和 const 左值引用参数类型的多元映射扩展恒等函数类型。

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

template<typename _type , size_t _vN = 1>

using ystdex::id_func_rr_t = typedef id_func_t<_type, _vN, _type&&>

取指定维数和 const 右值引用参数类型的多元映射扩展恒等函数类型。

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

template<typename _type , size_t _vN = 1, typename _tParam = _type>

using ystdex::id_func_t = typedef make_function_type_t<_type, vseq::join_n_t<_vN, std::tuple<_tParam>>>

取指定维数和指定参数类型的多元映射扩展恒等函数类型。

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

template<typename _type >

using ystdex::identity_t = typedef _t<identity<_type>>

自从
  build 595

在文件 type_traits.hpp 第 968 行定义.

template<typename _type >

using ystdex::indirect_element_t = typedef remove_reference_t<indirect_t<_type>>

自从
  build 671

在文件 type_traits.hpp 第 983 行定义.

template<typename _type >

using ystdex::indirect_t = typedef decltype(*std::declval<_type>())

在文件 type_traits.hpp 第 978 行定义.

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

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

template<template< typename... > class _gOp, typename... _tParams>

using ystdex::is_detected = typedef typename details::detector<nonesuch, void, _gOp, _tParams...>::value_t

在文件 type_traits.hpp 第 667 行定义.

template<typename _tTo , template< typename... > class _gOp, typename... _tParams>

using ystdex::is_detected_convertible = typedef is_convertible<detected_t<_gOp, _tParams...>, _tTo>

在文件 type_traits.hpp 第 686 行定义.

template<typename _tExpected , template< typename... > class _gOp, typename... _tParams>

using ystdex::is_detected_exact = typedef is_same<_tExpected, detected_t<_gOp, _tParams...>>

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

template<typename _type , class _tMutex = std::mutex, class _tLock = std::unique_lock<_tMutex>>

using ystdex::locked_ptr = typedef threading::locked_ptr<_type, _tMutex, _tLock>

独占所有权的锁定指针：默认使用标准库互斥量和锁。

参见
  threading::locked_ptr

自从
  build 551

在文件 concurrency.h 第 62 行定义.

template<size_t _vFrac, size_t _vInt = 1, bool _bSigned = false>

using ystdex::make_fixed_t = typedef fixed_point<conditional_t<_bSigned, typename make_width_int<_vFrac + _vInt>::least_type, typename make_width_int<_vFrac + _vInt>::unsigned_least_type>, _vFrac>

取包括指定有效二进制位和至少指定位整数的定点数类型。

自从
  build 561

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

template<typename _tRet , class _tTuple >

using ystdex::make_function_type_t = typedef _t<make_function_type<_tRet, _tTuple>>

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

template<typename _tInt , size_t _vN>

using ystdex::make_natural_sequence = typedef make_peano_sequence<_tInt, 0, _vN>

取自然数序列。

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

template<typename _tInt , size_t _vN>

using ystdex::make_natural_sequence_t = typedef _t<make_natural_sequence<_tInt, _vN>>

在文件 integer_sequence.hpp 第 201 行定义.

template<typename _fCallable >

using ystdex::make_parameter_tuple_t = typedef _t<make_parameter_tuple<_fCallable>>

自从
  build 447

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

template<typename _tInt , _tInt _vBase, size_t _vN>

using ystdex::make_peano_sequence_t = typedef _t<make_peano_sequence<_tInt, _vBase, _vN>>

自从
  build 590

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

template<typename _tInt , _tInt _vBase, class _tSeq >

using ystdex::make_successor_t = typedef _t<make_successor<_tInt, _vBase, _tSeq>>

在文件 integer_sequence.hpp 第 152 行定义.

template<typename _type >

using ystdex::member_target_type_t = typedef _t<details::member_target_type_impl<_type>>

取成员指针类型指向的类类型。

自从
  build 612

在文件 type_op.hpp 第 269 行定义.

using ystdex::octet = typedef void

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

template<typename _fCallable , typename... _tParams>

using ystdex::packed_task_t = typedef std::packaged_task<result_of_t<_fCallable&&(_tParams&&...)>()>

自从
  build 358

在文件 future.hpp 第 91 行定义.

template<size_t _vIdx, typename _fCallable >

using ystdex::parameter_of_t = typedef _t<parameter_of<_vIdx, _fCallable>>

自从
  build 447

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

template<typename _type >

using ystdex::remove_rcv_t = typedef _t<remove_rcv<_type>>

自从
  build 448

在文件 type_op.hpp 第 241 行定义.

template<typename _fCallable >

using ystdex::return_of_t = typedef _t<return_of<_fCallable>>

自从
  build 447

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

template<typename _tInt , _tInt _vDefault, _tInt... _values>

using ystdex::same_value_as = typedef is_same<integer_sequence<_tInt, _vDefault, _values...>, integer_sequence<_tInt, _values..., _vDefault>>

判断是否具有相同的指定值。

自从
  build 651

在文件 integer_sequence.hpp 第 210 行定义.

using ystdex::string_view = typedef basic_string_view<char>

在文件 string_view.hpp 第 415 行定义.

template<typename _type , typename _tCond = bool, typename _tReference = _type&>

using ystdex::swap_guard = typedef state_guard<_type, _tCond, _tReference>

使用 ADL swap 调用暂存对象的作用域守护。

自从
  build 569

待办事项:

  支持分配器。

  支持有限的复制和转移。

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

using ystdex::tstring_view = typedef basic_tstring_view<char>

在文件 tstring_view.hpp 第 291 行定义.

using ystdex::u16string_view = typedef basic_string_view<char16_t>

在文件 string_view.hpp 第 416 行定义.

using ystdex::u16tstring_view = typedef basic_tstring_view<char16_t>

在文件 tstring_view.hpp 第 292 行定义.

using ystdex::u32string_view = typedef basic_string_view<char32_t>

在文件 string_view.hpp 第 417 行定义.

using ystdex::u32tstring_view = typedef basic_tstring_view<char32_t>

在文件 tstring_view.hpp 第 293 行定义.

using ystdex::unique_file_ptr = typedef std::unique_ptr<std::FILE, decltype(std::fclose)&>

独占所有权的 C 标准库流指针或实现提供的等价类型。

注解
  POSIX 管道流可使用函数实现的 `::pclose` 代替 std::fclose 。

自从
  build 566

在文件 ystdex/cstdio.h 第 82 行定义.

template<class _tMutex = std::mutex, class _tLock = std::unique_lock<_tMutex>>

using ystdex::unlock_delete = typedef threading::unlock_delete<_tMutex, _tLock>

解锁删除器：默认使用标准库互斥量和锁。

参见
  threading::unlock_delete

自从
  build 590

在文件 concurrency.h 第 52 行定义.

template<typename _type >

using ystdex::unwrap_reference_t = typedef _t<unwrap_reference<_type>>

在文件 ref.hpp 第 176 行定义.

template<typename... _types>

using ystdex::void_t = typedef well_formed_t<void, _types...>

参见
  WG21 N3911 。
  WG21 N4296 20.10.2[meta.type.synop] 。

自从
  build 591

在文件 type_traits.hpp 第 581 行定义.

template<typename _type , typename... _types>

using ystdex::well_formed_t = typedef typename always<_type>::template apply<_types...>::type

void_t 的一般化，允许指定别名类型。

参见
  https://gcc.gnu.org/bugzilla/show_bug.cgi?id=59204 。
  http://wg21.cmeerw.net/cwg/issue1558 。

自从
  build 688

在文件 type_traits.hpp 第 568 行定义.

template<typename... _types>

using ystdex::when_valid = typedef well_formed_t<when<true>, _types...>

类似 void_t 的元函数，但具有较低匹配优先级，避免偏特化歧义。

参见
  void_t

自从
  build 688

在文件 type_traits.hpp 第 599 行定义.

template<typename _type >

using ystdex::wrapped_enum_traits_t = typedef _t<wrapped_enum_traits<_type>>

在文件 enum.hpp 第 54 行定义.

using ystdex::wstring_view = typedef basic_string_view<wchar_t>

在文件 string_view.hpp 第 418 行定义.

using ystdex::wtstring_view = typedef basic_tstring_view<wchar_t>

在文件 tstring_view.hpp 第 294 行定义.

## 枚举类型说明

enum ystdex::byte_order

strong

字节序。

待办事项:
  使用单独的头文件。

自从
  build 594

枚举值
unknown |
neutral |
little |
big |
PDP |

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

enum ystdex::path_category : size_t

strong

路径类别。

自从
  build 543

枚举值
empty |
self |
parent |
node |

在文件 path.hpp 第 83 行定义.

## 函数说明

template<class _tString >

_tString ystdex::alph | ( | _tString & | str | ) |

取字母表：有序的字符串的不重复序列。

自从
  build 414

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

参考 sort_unique().

函数调用图:
template<typename _func , class _tTuple >

auto ystdex::apply | ( | _func && | f,
|  | _tTuple && | args
| ) |  | -> decltype(call_projection<_tTuple, make_index_sequence< std::tuple_size<decay_t<_tTuple>>::value>>::call(std::forward<decltype( f )>( f ), std::forward<decltype( args )>( args )))

inline

应用函数对象和参数元组。

模板参数

  _func | 函数对象及其引用类型。
  _tTuple | 元组及其引用类型。

参见
  WG21 N3936 20.5.1[intseq.general] 。
  http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4023.html#tuple.apply 。

自从
  build 547

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

参考 CHRLib::args , 以及 yforward.

template<class _tCon , typename... _tParams>

void ystdex::assign | ( | _tCon & | con,
|  | _tParams &&... | args
| ) |  |

inline

插入参数指定的元素到容器。

自从
  build 274

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

参考 CHRLib::args , 以及 yforward.

参考自 ystdex::details::optional_base< remove_cv_t< _type > >::operator=(), ystdex::details::optional_base< _type, true >::operator=() , 以及 YSLib::Text::VerifyEncoding().

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

void ystdex::assign | ( | _tCon & | con,
|  | const _type(&) | arr[_vN]
| ) |  |

inline

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

template<typename _func , typename... _tParams>

auto ystdex::bind1 | ( | _func && | f,
|  | _tParams &&... | args
| ) |  | -> decltype( std::bind(std::forward<decltype( f )>( f ), std::placeholders::_1, std::forward<decltype( args )>( args )...))

inline

复合调用 std::bind 和 std::placeholders::_1 。

注解
  ISO C++ 要求 std::placeholders::_1 被实现支持。

自从
  build 628

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

参考 CHRLib::args , 以及 yforward.

参考自 YReader::ShlTextReader::BaseSession::BaseSession(), bind_forward(), YSLib::UI::MLinearUIContainer::Contains(), YSLib::UI::MLinearUIContainer::operator-=(), YReader::TextInfoBox::Refresh(), NPL::A1::TransformNode() , 以及 NPL::A1::TransformNodeSequence().

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

auto ystdex::bind1 | ( | _func && | f,
|  | _tParams &&... | args
| ) |  | -> decltype( std::bind<_tRes>(std::forward<decltype( f )>( f ), std::placeholders::_1, std::forward<decltype( args )>( args )...))

inline

自从
  build 653

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

参考 CHRLib::args , 以及 yforward.

template<typename _func , typename _func2 , typename... _tParams>

auto ystdex::bind_forward | ( | _func && | f,
|  | _func2 && | f2,
|  | _tParams &&... | args
| ) |  | -> decltype(ystdex::bind1(std::forward<decltype( f )>( f ), std::bind(std::forward<decltype( f2 )>( f2 ), std::placeholders::_2, std::forward<decltype( args )>( args )...)))

inline

复合调用 ystdex::bind1 和 std::placeholders::_2 以实现值的设置。

注解
  从右到左逐个应用参数。
  ISO C++ 要求 std::placeholders::_2 被实现支持。

自从
  build 651

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

参考 CHRLib::args, bind1() , 以及 yforward.

函数调用图:
template<class _tMap , typename _tKey , typename _func , typename... _tParams>

auto ystdex::cache_lookup | ( | _tMap & | cache,
|  | const _tKey & | key,
|  | _func | init,
|  | _tParams &&... | args
| ) |  | -> decltype((cache.begin()->second))

以指定的关键字查找作为缓存的无序关联容器， 若没有找到使用指定的可调用对象和参数初始化内容。

模板参数

  _tMap | 映射类型，可以是 std::map 、 std::unordered_map 或 ystdex::used_list_cache 等。

自从
  build 521

在文件 cache.hpp 第 369 行定义.

参考 CHRLib::args, YSLib::i, YB_UNLIKELY , 以及 yforward.

参考自 YSLib::Drawing::ZoomedImageCache::Lookup() , 以及 YSLib::Drawing::Typeface::LookupBitmap().

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

auto ystdex::call_for_value | ( | _type && | val,
|  | _fCallable && | f,
|  | _tParams &&... | args
| ) |  | -> common_nonvoid_t<result_of_t<_fCallable&&(_tParams&&...)>, _type>

调用第二个参数起指定的函数对象，若返回空类型则使用第一个参数的值为返回值。

自从
  build 606

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

参考 CHRLib::args, ystdex::details::call_for_value() , 以及 yforward.

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

auto ystdex::call_value_or | ( | _func | f,
|  | _type | p,
|  | _tOther && | other = `{}`
| ) |  | -> decltype(p ? f(*p) : other)

inline

调用非空值或取默认值。

在文件 deref_op.hpp 第 100 行定义.

参考自 fexists() , 以及 platform::ufexists().

这是这个函数的调用关系图:
template<typename _tOther , typename _func , typename _type , typename _tSentinal = nullptr_t>

auto ystdex::call_value_or | ( | _func | f,
|  | _type | p,
|  | _tOther && | other,
|  | _tSentinal | last
| ) |  | -> decltype(!bool(p == last) ? f(*p) : other)

inline

在文件 deref_op.hpp 第 108 行定义.

参考 platform::bool, YSLib::IO::f , 以及 CHRLib::CharSet::other.

template<class _tCon >

_tCon::iterator ystdex::cast_mutable | ( | _tCon & | con,
|  | typename _tCon::const_iterator | i
| ) |  |

inline

移除 const_iterator 的 const 限定。

自从
  build 680

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

参考自 cast_mutable() , 以及 search_map().

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

std::pair<typename _tCon::iterator, _type> ystdex::cast_mutable | ( | _tCon & | con,
|  | const std::pair< typename _tCon::const_iterator, _type > & | pr
| ) |  |

inline

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

参考 cast_mutable().

函数调用图:
template<typename _func >

void ystdex::chain_apply | ( | _func && | f | ) |

inline

顺序链式调用。

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

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

参考 YSLib::IO::f , 以及 yforward.

参考自 chain_apply().

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

void ystdex::chain_apply | ( | _func && | f,
|  | _type && | arg,
|  | _tParams &&... | args
| ) |  |

inline

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

参考 chain_apply(), YSLib::IO::f , 以及 yforward.

函数调用图:
template<typename _type , class _tAlloc = std::allocator<indirect_element_t<_type>>>

auto ystdex::clone_monomorphic | ( | const _type & | p,
|  | _tAlloc && | a = `_tAlloc()`
| ) |  | -> decltype(std::addressof(*p))

使用分配器复制指定指针指向的对象。

自从
  build 625

在文件 memory.hpp 第 488 行定义.

参考 YSLib::a , 以及 construct().

函数调用图:
template<class _type >

auto ystdex::clone_polymorphic | ( | const _type & | p | ) | -> decltype(std::addressof(*p))

使用 `clone` 成员函数复制指定指针指向的多态类类型对象。

前置条件
  断言： `is_polymorphic<indirect_element_t<decltype(p)>>()` 。

在文件 memory.hpp 第 507 行定义.

template<typename _func1 , typename _func2 , typename... _funcs>

auto ystdex::compose | ( | _func1 | f,
|  | _func2 | g,
|  | _funcs... | args
| ) |  | -> decltype(ystdex::compose(ystdex::compose(f, g), args...))

inline

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

参考 CHRLib::args , 以及 YSLib::Drawing::g.

参考自 fexists(), main() , 以及 platform::ufexists().

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

void ystdex::concat | ( | _tCon & | con,
|  | _tIn | first,
|  | _tIn | last
| ) |  |

插入元素到容器末尾。

前置条件
  指定元素的范围和容器不重叠。

注解
  使用 ADL end 。

自从
  build 546

待办事项:
  返回非 `void` 。

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

参考 ystdex::cpp2011::end().

参考自 concat() , 以及 vector_concat().

函数调用图:

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

void ystdex::concat | ( | _tCon & | con,
|  | _tRange && | c
| ) |  |

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

参考 ystdex::cpp2011::begin(), CHRLib::c, ystdex::cpp2011::end() , 以及 yforward.

函数调用图:
template<class _tString >

void ystdex::concat | ( | _tString & | str,
|  | size_t | n
| ) |  |

重复串接。

参数

  str | 被串接的字符串的引用。
  n | 串接结果包含原字符串的重复次数。

前置条件
  断言： `1 < n` 。

自从
  build 414

待办事项:
  检查 reserve 。

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

参考 concat() , 以及 yconstraint.

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

_tString ystdex::cond_prefix | ( | const _tString & | str,
|  | const _type & | prefix,
|  | _tString && | val = `{}`
| ) |  |

选择性过滤前缀。

返回
  指定前缀存在时为去除前缀的部分，否则为参数指定的替代值。

自从
  build 565

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

template<typename _tChar >

std::char_traits<_tChar>::int_type ystdex::const_ntctscmp | ( | const _tChar * | s1,
|  | const _tChar * | s2
| ) |  |

inline

比较简单 NTCTS 。

注解
  语义同 std::basic_string<_tChar>::compare ，但忽略指定长度。

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

参考 is_null().

参考自 const_ntctscmp() , 以及 const_ntctsfind().

函数调用图:

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

std::char_traits<_tChar>::int_type ystdex::const_ntctscmp | ( | const _tChar * | s1,
|  | const _tChar * | s2,
|  | size_t | n
| ) |  |

inline

比较不超过指定长度的简单 NTCTS 。

注解
  语义同 std::basic_string<_tChar>::compare 。

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

参考 const_ntctscmp(), is_null() , 以及 platform::n.

函数调用图:
template<typename _tChar >

size_t ystdex::const_ntctscnt | ( | const _tChar * | s,
|  | _tChar | c
| ) |  |

inline

计算简单 NTCTS 中的指定字符数。

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

参考 CHRLib::c , 以及 is_null().

函数调用图:
template<typename _tChar >

size_t ystdex::const_ntctsfind | ( | const _tChar * | s,
|  | _tChar | c
| ) |  |

inline

在简单 NTCTS 中顺序查找指定字符。

返回
  在查找结束时经过的字符数。

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

参考 CHRLib::c , 以及 is_null().

参考自 const_ntctsfind().

函数调用图:

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

size_t ystdex::const_ntctsfind | ( | const _tChar * | s,
|  | _tChar | c,
|  | size_t | n
| ) |  |

inline

在简单 NTCTS 中顺序查找第指定次数出现的指定字符。

返回
  在查找结束时经过的字符数。

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

参考 const_ntctsfind(), is_null() , 以及 platform::n.

函数调用图:
template<typename _tChar >

size_t ystdex::const_ntctsfind | ( | const _tChar * | s1,
|  | const _tChar * | s2
| ) |  |

inline

在简单 NTCTS 中顺序查找作为子串的指定 NTCTS 。

返回
  在查找结束时经过的字符数。

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

参考 const_ntctscmp(), const_ntctsfind(), const_ntctslen() , 以及 is_null().

函数调用图:
template<typename _tChar >

size_t ystdex::const_ntctslen | ( | const _tChar * | s | ) |

inline

计算简单 NTCTS 长度。

注解
  语义同 std::char_traits<_tChar>::length 。

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

参考 is_null() , 以及 CHRLib::s.

参考自 const_ntctsfind().

函数调用图:

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

std::unique_ptr<_tDst> ystdex::const_pointer_cast | ( | std::unique_ptr< _type > | p | ) |

在文件 memory.hpp 第 896 行定义.

template<typename _tDst , typename _type , typename _tDeleter >

std::unique_ptr<_tDst, _tDeleter> ystdex::const_pointer_cast | ( | std::unique_ptr< _type, _tDeleter > | p | ) |

在文件 memory.hpp 第 902 行定义.

template<typename _type >

enable_if_t<!has_overloaded_addressof<_type>::value, _type*> ystdex::constfn_addressof | ( | _type & | r | ) |

inline

尝试对非重载 operator& 提供 constexpr 的 std::addressof 替代。

注解
  当前 ISO C++ 的 std::addressof 无 constexpr 。

自从
  build 591

参见
  http://wg21.cmeerw.net/lwg/issue2296 。

在文件 addressof.hpp 第 78 行定义.

参考 YSLib::Drawing::r.

参考自 construct_in(), ystdex::addressof_op< _type >::operator()(), ystdex::addressof_op< void >::operator()() , 以及 ystdex::optional< _type >::operator->().

这是这个函数的调用关系图:
template<typename _type , typename = enable_if_t<has_overloaded_addressof<_type>::value>>

_type* ystdex::constfn_addressof | ( | _type & | r | ) |

inline

注解
  因为可移植性需要，不能直接提供 constexpr 。

在文件 addressof.hpp 第 86 行定义.

template<typename _tIter , typename... _tParams>

void ystdex::construct | ( | _tIter | i,
|  | _tParams &&... | args
| ) |  |

使用指定参数在迭代器指定的位置构造对象。

自从
  build 602

模板参数

  _tIter | 迭代器类型。
  _tParams | 用于构造对象的参数包类型。

参数

  args | 用于构造对象的参数包。

前置条件
  断言：指定范围末尾以外的迭代器满足 `!is_undereferenceable` 。

参数

  i | 迭代器。

注解
  显式转换为 void* 指针以实现标准库算法 uninitialized_* 实现类似的语义。

参见
  libstdc++ 5 和 Microsoft VC++ 2013 标准库在命名空间 std 内对指针类型的实现： _Construct 模板。

在文件 memory.hpp 第 189 行定义.

参考 CHRLib::args, YSLib::i, is_undereferenceable(), yconstraint , 以及 yforward.

参考自 ystdex::details::optional_base< _type, true >::assign(), clone_monomorphic(), construct_range(), ystdex::optional< _type >::emplace(), ystdex::optional< _type >::operator=(), ystdex::optional< _type >::swap(), uninitialized_construct() , 以及 uninitialized_construct_n().

函数调用图:

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

void ystdex::construct_in | ( | _type & | obj,
|  | _tParams &&... | args
| ) |  |

inline

原地构造。

模板参数

  _tParams | 用于构造对象的参数包类型。

参数

  args | 用于构造对象的参数包。

自从
  build 692

在文件 memory.hpp 第 164 行定义.

参考 CHRLib::args, constfn_addressof() , 以及 yforward.

参考自 ystdex::call_once_init< YSLib::GUIApplication::InitBlock, once_flag >::call_once_init(), ystdex::details::state_guard_impl< _type, _tToken >::construct_and_save() , 以及 ystdex::details::optional_base< _type, true >::construct_raw().

函数调用图:

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

void ystdex::construct_range | ( | _tIter | first,
|  | _tIter | last,
|  | _tParams &&... | args
| ) |  |

使用指定的参数重复构造迭代器范围内的对象序列。

注解
  参数被传递的次数和构造的对象数相同。

在文件 memory.hpp 第 203 行定义.

参考 CHRLib::args, construct() , 以及 yforward.

函数调用图:
template<typename _type >

lref<const _type> ystdex::cref | ( | const _type & | t | ) |

inline

在文件 ref.hpp 第 130 行定义.

参考自 YSLib::Drawing::DrawCircle() , 以及 YSLib::Drawing::FillCircle().

这是这个函数的调用关系图:
template<class _type >

void ystdex::cref | ( | const _type && |  | ) |

delete

template<typename _type >

_type ystdex::cube | ( | _type | x | ) |

inline

计算立方。

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

参考 YSLib::Drawing::x.

template<typename _tRange >

auto ystdex::data | ( | _tRange & | c | ) | -> decltype(c.data())

inline

在文件 range.hpp 第 280 行定义.

参考 CHRLib::c.

参考自 ystdex::basic_tstring_view< _tChar, _tTraits, 0 >::compare(), YSLib::Drawing::MultiBitmapData::LockPage(), main(), ystdex::basic_tstring_view< _tChar, _tTraits, 0 >::substr(), YSLib::TraceForOutermost(), platform::FAT::EntryData::WriteCDateTime(), platform::FAT::EntryData::WriteCluster() , 以及 platform::FAT::EntryData::WriteDateTime().

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

auto ystdex::data | ( | const _tRange & | c | ) | -> decltype(c.data())

inline

在文件 range.hpp 第 286 行定义.

参考 CHRLib::c.

template<typename _type , size_t _vN>

_type* ystdex::data | ( | _type(&) | array[_vN] | ) |

inline

在文件 range.hpp 第 292 行定义.

template<typename _type , size_t _vN>

_type* ystdex::data | ( | _type(&&) | array[_vN] | ) |

inline

在文件 range.hpp 第 298 行定义.

template<typename _tElem >

const _tElem* ystdex::data | ( | std::initializer_list< _tElem > | il | ) |

inline

在文件 range.hpp 第 304 行定义.

template<typename _tIter >

void ystdex::destruct | ( | _tIter | i | ) |

析构迭代器指向的对象。

参数

  i | 迭代器。

前置条件
  断言：`!is_undereferenceable(i)` 。

参见
  libstdc++ 5 和 Microsoft VC++ 2013 标准库在命名空间 std 内对指针类型的实现： _Destroy 模板。

在文件 memory.hpp 第 233 行定义.

参考 is_undereferenceable() , 以及 yconstraint.

参考自 destruct_range().

函数调用图:

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

void ystdex::destruct_in | ( | _type & | obj | ) |

inline

原地析构。

模板参数

  _tParams | 用于构造对象的参数包类型。

参数

  args | 用于构造对象的参数包。

自从
  build 693

在文件 memory.hpp 第 218 行定义.

参考自 ystdex::details::state_guard_impl< _type, _tToken >::destroy() , 以及 ystdex::details::optional_base< _type, true >::destroy_raw().

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

void ystdex::destruct_range | ( | _tIter | first,
|  | _tIter | last
| ) |  |

析构d迭代器范围内的对象序列。

注解
  保证顺序析构。

参见
  libstdc++ 5 标准库在命名空间 std 内的实现： _Destroy 模板。

在文件 memory.hpp 第 248 行定义.

参考 destruct().

参考自 uninitialized_construct() , 以及 uninitialized_construct_n().

函数调用图:

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

std::unique_ptr<_tDst> ystdex::dynamic_pointer_cast | ( | std::unique_ptr< _type > & | p | ) |

在文件 memory.hpp 第 861 行定义.

参考自 dynamic_pointer_cast().

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

std::unique_ptr<_tDst> ystdex::dynamic_pointer_cast | ( | std::unique_ptr< _type > && | p | ) |

在文件 memory.hpp 第 872 行定义.

参考 dynamic_pointer_cast() , 以及 platform::p.

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

std::unique_ptr<_tDst, _tDeleter> ystdex::dynamic_pointer_cast | ( | std::unique_ptr< _type, _tDeleter > & | p | ) |

在文件 memory.hpp 第 878 行定义.

template<typename _tDst , typename _type , typename _tDeleter >

std::unique_ptr<_tDst, _tDeleter> ystdex::dynamic_pointer_cast | ( | std::unique_ptr< _type, _tDeleter > && | p | ) |

在文件 memory.hpp 第 889 行定义.

参考 dynamic_pointer_cast() , 以及 platform::p.

函数调用图:
template<class _tAssocCon , typename _tKey , typename... _tParams>

enable_if_t<is_piecewise_mapped<_tAssocCon, _tKey, _tParams...>::value, typename _tAssocCon::iterator> ystdex::emplace_hint_in_place | ( | _tAssocCon & | con,
|  | typename _tAssocCon::const_iterator | hint,
|  | _tKey && | k,
|  | _tParams &&... | args
| ) |  |

inline

带有提示的原地插入构造。

自从
  build 681

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

参考 CHRLib::args , 以及 yforward.

参考自 ystdex::details::insert_or_assign(), try_emplace() , 以及 try_emplace_hint().

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

enable_if_t<!is_piecewise_mapped<_tAssocCon, _tKey, _tParams...>::value, typename _tAssocCon::iterator> ystdex::emplace_hint_in_place | ( | _tAssocCon & | con,
|  | typename _tAssocCon::const_iterator | hint,
|  | _tKey && | ,
|  | _tParams &&... | args
| ) |  |

inline

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

参考 CHRLib::args , 以及 yforward.

template<class _tRange >

auto ystdex::empty | ( | const _tRange & | c | ) | -> decltype(c.empty())

inline

在文件 range.hpp 第 255 行定义.

参考 CHRLib::c.

template<typename _type , size_t _vN>

bool ystdex::empty | ( | const | _type(&)[_vN] | ) |

inline

在文件 range.hpp 第 261 行定义.

template<typename _type , size_t _vN>

bool ystdex::empty | ( | const | _type(&&)[_vN] | ) |

inline

在文件 range.hpp 第 267 行定义.

template<typename _tElem >

bool ystdex::empty | ( | std::initializer_list< _tElem > | il | ) |

inline

在文件 range.hpp 第 273 行定义.

template<typename _tCon , typename _tIter , typename _fPred >

void ystdex::erase_all_if | ( | _tCon & | con,
|  | _tIter | first,
|  | _tIter | last,
|  | _fPred | pred
| ) |  |

inline

删除指定容器中指定区间中的或全部满足谓词的元素。

注解
  对整个序列容器使用 ystdex::remove_if 移除元素范围。
  对序列容器中的部分序列使用 std::remove_if 移除元素范围。

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

参考 ystdex::details::erase_all_if().

参考自 ystdex::path< _tSeqCon, _tTraits >::filter_self(), YReader::ShlTextReader::LoadFile(), YSLib::UI::MLinearUIContainer::operator-=() , 以及 YSLib::RemoveEmptyChildren().

函数调用图:

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

void ystdex::erase_all_if | ( | _tCon & | con,
|  | _fPred | pred
| ) |  |

inline

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

参考 ystdex::details::erase_all_if().

函数调用图:
template<class _tAssocCon , typename _tKey >

bool ystdex::erase_first | ( | _tAssocCon & | con,
|  | const _tKey & | k
| ) |  |

删除指定关联容器中等价于指定键的起始元素。

自从
  build 680

返回
  是否成功删除。

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

参考 ystdex::cpp2011::end() , 以及 YSLib::i.

参考自 YSLib::ValueNode::PDefH().

函数调用图:

这是这个函数的调用关系图:
template<class _tString >

enable_if_t<is_class<decay_t<_tString> >::value, _tString&&> ystdex::erase_left | ( | typename string_traits< _tString >::size_type | pos,
|  | _tString && | str
| ) |  |

inline

删除字符串中指定的连续字符左侧的字符串。

前置条件
  字符串类型满足 std::basic_string 或 basic_string_view 的操作及异常规范。

自从
  build 592

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

参考 erase_left() , 以及 YSLib::Text::str.

参考自 erase_left() , 以及 main().

函数调用图:

这是这个函数的调用关系图:
template<class _tString >

enable_if_t<is_class<decay_t<_tString> >::value, _tString&&> ystdex::erase_left | ( | _tString && | str,
|  | typename string_traits< _tString >::value_type | c
| ) |  |

inline

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

参考 erase_left() , 以及 YSLib::Text::str.

函数调用图:
template<class _tString >

enable_if_t<is_class<decay_t<_tString> >::value, _tString&&> ystdex::erase_left | ( | _tString && | str,
|  | const remove_reference_t< _tString > & | t
| ) |  |

inline

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

参考 erase_left() , 以及 YSLib::Text::str.

函数调用图:
template<class _tString >

enable_if_t<is_class<decay_t<_tString> >::value, _tString&&> ystdex::erase_left | ( | _tString && | str,
|  | typename string_traits< _tString >::const_pointer | t = `&to_array<typename string_traits<_tString>::value_type>(" \f\n\r\t\v")[0]`
| ) |  |

inline

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

自从
  build 600

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

参考 erase_left(), YSLib::Text::str , 以及 yconstraint.

参考自 erase_left() , 以及 ltrim().

函数调用图:

这是这个函数的调用关系图:
template<class _tAssocCon >

_tAssocCon::size_type ystdex::erase_multi | ( | _tAssocCon & | con,
|  | const typename _tAssocCon::key_type & | k
| ) |  |

inline

删除指定关联容器中等价于指定键的所有元素。

返回
  删除的元素数。

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

template<class _tAssocCon , typename _tKey >

_tAssocCon::size_type ystdex::erase_multi | ( | _tAssocCon & | con,
|  | const _tKey & | k
| ) |  |

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

参考 ystdex::any_ops::distance , 以及 platform::n.

template<typename _tCon >

_tCon::const_iterator ystdex::erase_n | ( | _tCon & | con,
|  | typename _tCon::const_iterator | i,
|  | typename _tCon::difference_type | n
| ) |  |

删除指定容器中指定迭代器起始指定数量的元素。

前置条件
  指定的迭代器是指定容器的迭代器。
  断言检查：删除的范围不超出容器。

自从
  build 531

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

参考 ystdex::cpp2014::cend(), ystdex::any_ops::distance , 以及 yassume.

函数调用图:
template<typename _tCon >

_tCon::iterator ystdex::erase_n | ( | _tCon & | con,
|  | typename _tCon::iterator | i,
|  | typename _tCon::difference_type | n
| ) |  |

自从
  build 532

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

参考 ystdex::any_ops::distance, ystdex::cpp2011::end() , 以及 yassume.

函数调用图:
template<class _tString >

enable_if_t<is_class<decay_t<_tString> >::value, _tString&&> ystdex::erase_right | ( | typename string_traits< _tString >::size_type | pos,
|  | _tString && | str
| ) |  |

inline

删除字符串中指定的连续字符右侧的字符串。

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

参考 erase_right() , 以及 YSLib::Text::str.

参考自 erase_right() , 以及 main().

函数调用图:

这是这个函数的调用关系图:
template<class _tString >

enable_if_t<is_class<decay_t<_tString> >::value, _tString&&> ystdex::erase_right | ( | _tString && | str,
|  | typename string_traits< _tString >::value_type | c
| ) |  |

inline

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

参考 erase_right() , 以及 YSLib::Text::str.

函数调用图:
template<class _tString >

enable_if_t<is_class<decay_t<_tString> >::value, _tString&&> ystdex::erase_right | ( | _tString && | str,
|  | const remove_reference_t< _tString > & | t
| ) |  |

inline

自从
  build 659

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

参考 erase_right() , 以及 YSLib::Text::str.

函数调用图:
template<class _tString >

enable_if_t<is_class<decay_t<_tString> >::value, _tString&&> ystdex::erase_right | ( | _tString && | str,
|  | typename string_traits< _tString >::const_pointer | t = `&to_array<typename string_traits<_tString>::value_type>(" \f\n\r\t\v")[0]`
| ) |  |

inline

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

自从
  build 600

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

参考 erase_right(), YSLib::Text::str , 以及 yconstraint.

参考自 erase_right() , 以及 rtrim().

函数调用图:

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

bool ystdex::exists_substr | ( | const _tString & | str,
|  | const _type & | sub
| ) |  |

inline

判断是否存在子串。

自从
  build 546

待办事项:
  添加序列容器子串重载版本；优化：避免构造子串对象。

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

template<class _tString , typename _type >

bool ystdex::exists_substr | ( | const _tString & | str,
|  | const typename _tString::value_type * | p_sub
| ) |  |

inline

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

参考 yconstraint.

template<typename _tChar , class _tTraits , class _tAlloc , typename _func >

std::basic_istream<_tChar, _tTraits>& ystdex::extract | ( | std::basic_istream< _tChar, _tTraits > & | is,
|  | std::basic_string< _tChar, _tTraits, _tAlloc > & | str,
|  | _func | f
| ) |  |

从输入流中取字符串。

自从
  build 565

注解
  同 std::getline ，除判断分隔符及附带的副作用由参数的函数对象决定。

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

参考 CHRLib::c, YSLib::IO::f, platform::n, rethrow_badstate() , 以及 yassume.

参考自 extract_line() , 以及 extract_line_cr().

函数调用图:

这是这个函数的调用关系图:
template<class _tAssocCon , typename _type , typename = enable_if_convertible_t<const _type&, const typename _tAssocCon::value_type&>>

const _tAssocCon::key_type& ystdex::extract_key | ( | const _type & | val | ) |

inline

从关联容器的值取键。

自从
  build 679

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

参考自 search_map().

这是这个函数的调用关系图:
template<class _tAssocCon , typename _tKey , typename = enable_if_inconvertible_t<const _tKey&, const typename _tAssocCon::value_type&>>

const _tKey& ystdex::extract_key | ( | const _tKey & | k | ) |

inline

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

template<typename _tChar , class _tTraits , class _tAlloc >

std::basic_istream<_tChar, _tTraits>& ystdex::extract_line | ( | std::basic_istream< _tChar, _tTraits > & | is,
|  | std::basic_string< _tChar, _tTraits, _tAlloc > & | str,
|  | _tChar | delim
| ) |  |

注解
  同 std::getline ，除字符串结尾包含分隔符。

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

参考 CHRLib::c, CHRLib::d , 以及 extract().

参考自 extract_line().

函数调用图:

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

std::basic_istream<_tChar, _tTraits>& ystdex::extract_line | ( | std::basic_istream< _tChar, _tTraits > & | is,
|  | std::basic_string< _tChar, _tTraits, _tAlloc > & | str
| ) |  |

inline

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

参考 extract_line().

函数调用图:
template<typename _tChar , class _tTraits , class _tAlloc >

std::basic_istream<_tChar, _tTraits>& ystdex::extract_line_cr | ( | std::basic_istream< _tChar, _tTraits > & | is,
|  | std::basic_string< _tChar, _tTraits, _tAlloc > & | str,
|  | _tChar | delim_cr = `'\r'`,
|  | _tChar | delim = `'\n'`
| ) |  |

同 `ystdex::extract_line` ，但允许分隔符包含附加的前缀字符。

注解
  默认 `LF` 作为基准分隔符，前缀为 `CR` ，即接受 `LF` 和 `CR+LF` 。
  一般配合二进制方式打开的流使用，以避免不必要的分隔符转换。

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

参考 CHRLib::c, CHRLib::d , 以及 extract().

函数调用图:

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

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

注解
  使用 std::fopen 实现。

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

自从
  build 326

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

参考 call_value_or(), compose(), yconstraint , 以及 yimpl.

参考自 platform::ufexists().

函数调用图:

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

_tString ystdex::find_prefix | ( | const _tString & | str,
|  | _tParams &&... | args
| ) |  |

inline

取前缀子字符串。

自从
  build 599

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

参考 CHRLib::args , 以及 yforward.

template<typename _tString , typename... _tParams>

_tString ystdex::find_suffix | ( | const _tString & | str,
|  | _tParams &&... | args
| ) |  |

inline

取后缀子字符串。

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

参考 CHRLib::args , 以及 yforward.

template<typename _tString >

_tString ystdex::get_mid | ( | const _tString & | str,
|  | typename _tString::size_type | l = `1`
| ) |  |

inline

取删除前缀和后缀的子字符串。

前置条件
  断言：删除的字符串不大于串长。

自从
  build 304

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

参考 yassume.

参考自 NPL::Deliteralize() , 以及 NPL::EscapeLiteral().

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

_tString ystdex::get_mid | ( | const _tString & | str,
|  | typename _tString::size_type | l,
|  | typename _tString::size_type | r
| ) |  |

inline

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

参考 YSLib::Drawing::r , 以及 yassume.

template<class _tEx >

std::exception_ptr ystdex::get_nested_exception_ptr | ( | const _tEx & | e | ) |

inline

取嵌套异常指针。

返回
  若符合 std::rethrow_if_nested 抛出异常的条件则返回异常指针，否则为空。

自从
  build 538

在文件 ystdex/exception.h 第 69 行定义.

template<typename _tString >

string_traits<_tString>::value_type ystdex::get_quote_mark_nonstrict | ( | const _tString & | str | ) |

inline

取相同的前缀和后缀元素。

前置条件
  取前缀和后缀操作无副作用。
  字符串非空。

自从
  build 697

待办事项:

  检查非成员 `front` 和 back `。`

  支持前缀和后缀字符串。

  扩展到一般容器。

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

参考自 NPL::CheckLiteral().

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

std::string ystdex::get_this_thread_id | ( |  | ) |

inline

取当前线程标识的字符串表示。

参见
  ystdex::to_string

自从
  build 626

在文件 concurrency.h 第 79 行定义.

参考 to_string().

函数调用图:
template<typename _tEx , typename _func , typename _tExCaught = remove_cv_t<_tEx>&>

void ystdex::handle_nested | ( | _tEx & | e,
|  | _func && | f
| ) |  |

处理嵌套异常。

自从
  build 539

在文件 ystdex/exception.h 第 97 行定义.

参考 YSLib::IO::f , 以及 yforward.

template<class _tAssocCon , typename _tKey , typename _tParam >

std::pair<typename _tAssocCon::iterator, bool> ystdex::insert_or_assign | ( | _tAssocCon & | con,
|  | _tKey && | k,
|  | _tParam && | arg
| ) |  |

inline

自从
  build 681

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

参考 ystdex::details::insert_or_assign(), search_map() , 以及 yforward.

参考自 YSLib::ValueNode::ImplRet().

函数调用图:

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

std::pair<typename _tAssocCon::iterator, bool> ystdex::insert_or_assign_hint | ( | _tAssocCon & | con,
|  | typename _tAssocCon::const_iterator | hint,
|  | _tKey && | k,
|  | _tParam && | arg
| ) |  |

inline

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

参考 ystdex::details::insert_or_assign(), search_map() , 以及 yforward.

参考自 YSLib::ValueNode::insert_or_assign().

函数调用图:

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

_tCon::const_iterator ystdex::insert_reversed | ( | _tCon & | con,
|  | typename _tCon::const_iterator | i,
|  | _tIn | first,
|  | _tIn | last
| ) |  |

逆向插入范围到容器的指定位置。

参数

  con | 指定的容器。
  i | 指定起始插入位置的迭代器。
  first | 输入范围起始迭代器。
  last | 输入范围终止迭代器。

前置条件
  i 是 con 的迭代器。

自从
  build 532

调用带有迭代器参数的 `insert` 成员函数插入迭代器指定的范围到容器的指定位置。 con 是关联容器时，范围内元素有序可被优化。

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

参考 YSLib::i, is_undereferenceable() , 以及 yconstraint.

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

result_of_t<_fCallable&&(_tParams&&...)> ystdex::invoke | ( | _fCallable && | f,
|  | _tParams &&... | args
| ) |  |

inline

调用可调用对象。

参见
  http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4169.html
  WG21 N4527 20.9.2[func.require] ， WG21 N4527 20.9.3[func.invoke] 。
  http://wg21.cmeerw.net/lwg/issue2013 。
  http://wg21.cmeerw.net/cwg/issue1581 。
  https://llvm.org/bugs/show_bug.cgi?id=23141 。

自从
  build 612

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

参考 ystdex::details::invoke_impl() , 以及 yforward.

参考自 ystdex::details::call_for_value(), ystdex::call_projection< _tRet(_tParams...), index_sequence< _vSeq... > >::invoke(), ystdex::call_projection< std::tuple< _tParams... >, index_sequence< _vSeq... > >::invoke(), ystdex::details::invoke_nonvoid_impl(), ystdex::thunk< _tRet, _fCallable >::operator()(), YSLib::TryInvoke() , 以及 ystdex::task_pool::wait_to_enqueue().

函数调用图:

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

nonvoid_result_t<result_of_t<_fCallable&&(_tParams&&...)> > ystdex::invoke_nonvoid | ( | _fCallable && | f,
|  | _tParams &&... | args
| ) |  |

inline

调用可调用对象，保证返回值非空。

自从
  build 635

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

参考 ystdex::details::invoke_nonvoid_impl() , 以及 yforward.

参考自 retry_on_cond().

函数调用图:

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

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

inline

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

自从
  build 653

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

参考 CHRLib::c.

参考自 const_ntctscmp(), const_ntctscnt(), const_ntctsfind(), const_ntctslen(), ntctschr(), ntctscmp(), ntctscpy(), ntctsicmp(), ntctsncpy(), CHRLib::UCS2ToUCS4() , 以及 CHRLib::UCS4ToUCS2().

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

enable_if_t<is_floating_point<_type>::value, bool> ystdex::is_zero | ( | _type | x | ) |

inline

判断指定的值是否为零值。

自从
  build 588

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

参考自 round_in().

这是这个函数的调用关系图:
template<typename _type , typename = enable_if_t<!is_floating_point<_type>::value>>

bool ystdex::is_zero | ( | _type | x | ) |

inline

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

bool ystdex::iscntrl_ASCII | ( | char | c | ) |

inline

使用 US-ASCII 字符集的 std::isprint 实现。

参见
  ISO C11 7.4/3 脚注。

在文件 cctype.h 第 63 行定义.

参考 iscntrl_C0().

函数调用图:

bool ystdex::iscntrl_C0 | ( | char | c | ) |

inline

判断指定字符是否为 ISO/IEC 2022 定义的 C0 控制字符。

自从
  build 513

在文件 cctype.h 第 42 行定义.

参考自 iscntrl_ASCII() , 以及 iscntrl_ISO8859_11().

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

bool ystdex::iscntrl_C1 | ( | char | c | ) |

inline

判断指定字符是否为 ISO/IEC 2022 定义的 C1 控制字符。

在文件 cctype.h 第 53 行定义.

参考 platform_ex::Windows::unsigned.

bool ystdex::iscntrl_ISO8859_1 | ( | char | c | ) |

inline

使用 ISO/IEC 8859-1 字符集的 std::iscntrl 实现。

在文件 cctype.h 第 78 行定义.

参考 iscntrl_ISO8859_11() , 以及 platform_ex::Windows::unsigned.

函数调用图:

bool ystdex::iscntrl_ISO8859_11 | ( | char | c | ) |

inline

使用 ISO/IEC 8859-11(Latin/Thai) 字符集的 std::iscntrl 实现。

在文件 cctype.h 第 70 行定义.

参考 iscntrl_C0() , 以及 platform_ex::Windows::unsigned.

参考自 iscntrl_ISO8859_1().

函数调用图:

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

bool ystdex::isdigit | ( | char | c | ) |

inline

区域无关的 std::isdigit 实现。

注解
  ISO C 和 ISO C++ 保证基本字符集中的数字字符具有从小到大连续的整数值表示。

参见
  ISO C11 5.2.1/3 。
  ISO C++11 2.3/3 。

自从
  build 514

在文件 cctype.h 第 122 行定义.

bool ystdex::isprint | ( | char | c | ) |

inline

区域无关的 std::isprint 实现。

注解
  当前使用基于 ISO/IEC 8859-1 的 Unicode 方案实现。
  可作为替代 MSVCRT 的实现的变通。

参见
  https://connect.microsoft.com/VisualStudio/feedback/details/799287/isprint-incorrectly-classifies-t-as-printable-in-c-locale

在文件 cctype.h 第 108 行定义.

参考 isprint_ISO8859_1() , 以及 yimpl.

函数调用图:

bool ystdex::isprint_ASCII | ( | char | c | ) |

inline

使用 US-ASCII 字符集的 std::isprint 实现。

参见
  ISO C11 7.4/3 脚注。

在文件 cctype.h 第 89 行定义.

参考自 isprint_ISO8859_1().

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

bool ystdex::isprint_ISO8859_1 | ( | char | c | ) |

inline

使用 ISO/IEC 8859-1 字符集的 std::isprint 实现。

在文件 cctype.h 第 96 行定义.

参考 isprint_ASCII() , 以及 platform_ex::Windows::unsigned.

参考自 isprint().

函数调用图:

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

bool ystdex::iswgraph | ( | wchar_t | wc | ) |

inline

区域无关的 std::iswgraph 实现。

参见
  ISO C11 7.30.2.1.6 。

在文件 cwctype.h 第 62 行定义.

参考 iswprint() , 以及 iswspace().

函数调用图:

bool ystdex::iswprint | ( | wchar_t | wc | ) |

区域无关的 std::isprint 实现。

自从
  build 662

注解
  当前使用兼容 Unicode 的简单实现（参考 MUSL libc ）。
  可作为替代 MSVCRT 的实现的变通（测试表明 iswprintf 和 isprint 有类似缺陷）。

参见
  https://connect.microsoft.com/VisualStudio/feedback/details/799287/isprint-incorrectly-classifies-t-as-printable-in-c-locale

在文件 cwctype.cpp 第 34 行定义.

参考 CHRLib::c , 以及 platform_ex::Windows::unsigned.

参考自 iswgraph().

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

bool ystdex::iswspace | ( | wchar_t | wc | ) |

区域无关的 std::iswspace 实现。

注解
  当前使用 Unicode 5.2 实现（参考 newlib ）。
  可作为替代 Android 2.3.1 的实现的变通（测试表明 iswspace 对个别字符可能返回 8 ）。

自从
  build 514

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

参考自 iswgraph().

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

void ystdex::iterate_exceptions | ( | _func && | f,
|  | std::exception_ptr | p = `std::current_exception()`
| ) |  |

迭代处理异常。

自从
  build 538

在文件 ystdex/exception.h 第 56 行定义.

参考 YSLib::IO::f, platform::p , 以及 yforward.

template<class _tString >

_tString&& ystdex::ltrim | ( | _tString && | str,
|  | typename string_traits< _tString >::value_type | c
| ) |  |

inline

删除字符串中指定的连续前缀字符。

自从
  build 552

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

参考 erase_left() , 以及 YSLib::Text::str.

参考自 YReader::ShlReader::LoadBookmarks(), main() , 以及 trim().

函数调用图:

这是这个函数的调用关系图:
template<class _tString >

_tString&& ystdex::ltrim | ( | _tString && | str,
|  | const _tString & | t
| ) |  |

inline

自从
  build 659

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

参考 erase_left() , 以及 YSLib::Text::str.

函数调用图:
template<class _tString >

_tString&& ystdex::ltrim | ( | _tString && | str,
|  | typename string_traits< _tString >::const_pointer | t = `&to_array<typename string_traits<_tString>::value_type>(" \f\n\r\t\v")[0]`
| ) |  |

inline

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

自从
  build 600

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

参考 erase_left(), YSLib::Text::str , 以及 yconstraint.

函数调用图:
template<typename _tAlloc >

std::unique_ptr<_tAlloc, allocator_delete<_tAlloc> > ystdex::make_allocator_guard | ( | _tAlloc & | alloc,
|  | typename std::allocator_traits< _tAlloc >::size_type | n = `1`
| ) |  |

构造分配器守护。

自从
  build 595

在文件 memory.hpp 第 831 行定义.

参考 platform::n.

template<class _tCon , typename _tElem >

_tCon ystdex::make_container | ( | std::initializer_list< _tElem > | il | ) |

inline

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

template<bool _bNoThrow = true, typename _type >

guard<_type> ystdex::make_guard | ( | _type | f | ) |

在文件 scope_guard.hpp 第 83 行定义.

参考 YSLib::IO::f.

参考自 main().

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

observer_ptr<_type> ystdex::make_observer | ( | _type * | p | ) |

inline

在文件 memory.hpp 第 1042 行定义.

参考 platform::p.

参考自 YSLib::AccessNodePtr(), YSLib::ValueObject::AccessPtr(), YSLib::UI::Window::Add(), YSLib::UI::TextPlaceholder::BindByFocus(), YSLib::UI::Caret::Caret(), YSLib::UI::DialogBox::DialogBox(), YSLib::UI::DoRequestFocus(), YSLib::UI::FetchTrace(), YSLib::UI::TabControl::Find(), YSLib::Drawing::FontCache::GetFontFamilyPtr(), platform_ex::Windows::GlobalLocked::GetPtr(), YSLib::UI::MenuHost::HideUnrelated(), YSLib::UI::ImplDeDtor(), YSLib::Drawing::FontCache::InitializeDefaultTypeface(), YSLib::UI::Invalidate(), YSLib::UI::InvalidateVisible(), YSLib::UI::IsFocusedCascade(), YSLib::UI::ListBox::ListBox(), YSLib::UI::LocateForTrace(), YSLib::UI::LocateForWidgetNode(), YSLib::UI::LocateMenu(), YSLib::Drawing::MultiBitmapData::LockPage(), YSLib::UI::Menu::Menu(), YSLib::UI::OnTouchHeld_DraggingRaw(), platform::HDirectory::operator++(), YSLib::UI::Window::operator+=(), YSLib::UI::TabBar::operator+=(), YSLib::UI::ReleaseFocusFrom(), YSLib::UI::Restart(), YSLib::UI::ScrollableContainer::ScrollableContainer(), YSLib::UI::RadioBox::Select(), YSLib::UI::Menu::ShowSub(), YSLib::UI::TextList::TextList() , 以及 YSLib::Devices::InputManager::Update().

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

optional<decay_t<_type> > ystdex::make_optional | ( | _type && | v | ) |

inline

在文件 optional.h 第 519 行定义.

参考 v , 以及 yforward.

template<typename _type , typename... _tParams>

optional<_type> ystdex::make_optional_inplace | ( | _tParams &&... | args | ) |

inline

使用指定参数构造指定 optional 实例的值。

注解
  YBase optional 扩展。

自从
  build 655

在文件 optional.h 第 533 行定义.

参考 CHRLib::args, in_place , 以及 yforward.

template<typename _type >

std::future<decay_t<_type> > ystdex::make_ready_future | ( | _type && | val | ) |

在文件 future.hpp 第 54 行定义.

std::future<void> ystdex::make_ready_future | ( |  | ) |

inline

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

template<typename _type >

std::future<_type> ystdex::make_ready_future | ( | std::exception_ptr | p | ) |

在文件 future.hpp 第 73 行定义.

template<typename _type , typename... _tParams>

enable_if_t<!is_array<_type>::value, std::unique_ptr<_type> > ystdex::make_unique_default_init | ( |  | ) |

inline

注解
  使用默认初始化。

参见
  WG21 N3588 A4 。

自从
  build 526

在文件 memory.hpp 第 756 行定义.

参考自 YSLib::Drawing::HBitmap::operator CompactPixmap().

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

enable_if_t<is_array<_type>::value && extent<_type>::value == 0, std::unique_ptr<_type> > ystdex::make_unique_default_init | ( | size_t | size | ) |

inline

在文件 memory.hpp 第 763 行定义.

参考 size().

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

enable_if_t<extent<_type>::value != 0> ystdex::make_unique_default_init | ( | _tParams && | ... | ) |

delete

template<typename _type , typename _tDeleter , typename... _tParams>

enable_if_t<!is_array<_type>::value, std::unique_ptr<_type> > ystdex::make_unique_with | ( | _tDeleter && | d | ) |

inline

注解
  使用删除器。

自从
  build 562

在文件 memory.hpp 第 792 行定义.

参考 yforward.

template<typename _type , typename _tDeleter , typename... _tParams>

enable_if_t<is_array<_type>::value && extent<_type>::value == 0, std::unique_ptr<_type> > ystdex::make_unique_with | ( | _tDeleter && | d,
|  | size_t | size
| ) |  |

inline

在文件 memory.hpp 第 799 行定义.

参考 size() , 以及 yforward.

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

enable_if_t<extent<_type>::value != 0> ystdex::make_unique_with | ( | _tDeleter && | ,
|  | _tParams && | ...
| ) |  |

delete

byte_order ystdex::native_byte_order | ( |  | ) |

inline

测试本机字节序。

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

参考 big, little, PDP, unknown, YSLib::Drawing::x , 以及 yconstexpr.

bool ystdex::native_little_bit_order | ( |  | ) |

inline

测试本机位序。

在文件 cstdint.hpp 第 86 行定义.

参考 platform::bool , 以及 ystdex::details::bit_order_tester::le.

template<typename _tOther , typename _type >

auto ystdex::nonnull_or | ( | _type | p,
|  | _tOther && | other = `{}`
| ) |  | -> decltype(p ? p : other)

inline

取非空引用或默认值。

自从
  build 689

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

template<typename _tOther , typename _type , typename _tNull = nullptr_t>

auto ystdex::nonnull_or | ( | _type | p,
|  | _tOther && | other,
|  | _tNull | null
| ) |  | -> decltype(!bool(p == null) ? p : other)

inline

在文件 deref_op.hpp 第 70 行定义.

参考 platform::bool , 以及 CHRLib::CharSet::other.

template<typename _tChar >

_tChar* ystdex::ntctschr | ( | _tChar * | s,
|  | remove_const_t< _tChar > | c
| ) |  |

在简单 NTCTS 内查找字符。

前置条件
  断言： `s` 。

返回
  若未找到为空指针值，否则为指向首个查找到的字符的指针值。

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

参考 CHRLib::c, is_null(), platform::p , 以及 yconstraint.

参考自 ntctschr() , 以及 platform_ex::Windows::YB_NONNULL().

函数调用图:

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

char* ystdex::ntctschr | ( | char * | s,
|  | char | c
| ) |  |

inline

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

参考 CHRLib::c , 以及 yconstraint.

const char* ystdex::ntctschr | ( | const char * | s,
|  | char | c
| ) |  |

inline

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

参考 CHRLib::c , 以及 yconstraint.

wchar_t* ystdex::ntctschr | ( | wchar_t * | s,
|  | wchar_t | c
| ) |  |

inline

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

参考 CHRLib::c , 以及 yconstraint.

const wchar_t* ystdex::ntctschr | ( | const wchar_t * | s,
|  | wchar_t | c
| ) |  |

inline

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

参考 CHRLib::c , 以及 yconstraint.

uchar_t* ystdex::ntctschr | ( | uchar_t * | s,
|  | uchar_t | c
| ) |  |

inline

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

参考 CHRLib::c, ntctschr() , 以及 replace_cast().

函数调用图:

const uchar_t* ystdex::ntctschr | ( | const uchar_t * | s,
|  | uchar_t | c
| ) |  |

inline

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

参考 CHRLib::c, ntctschr() , 以及 replace_cast().

函数调用图:
template<typename _tChar >

size_t ystdex::ntctsfind | ( | const _tChar * | s,
|  | size_t | n,
|  | _tChar | c
| ) |  |

inline

在简单 NTCTS 的指定前若干字符内查找字符。

前置条件
  `[s, s + n)` 有效。

注解
  语义同 std::char_traits<_tChar>::find 。

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

参考 CHRLib::c , 以及 yconstraint.

参考自 ntctslen().

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

size_t ystdex::ntctslen | ( | const _tChar * | s | ) |

inline

计算简单 NTCTS 长度。

注解
  语义同 std::char_traits<_tChar>::length 。

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

参考 CHRLib::s , 以及 yconstraint.

参考自 platform::FAT::LFN::ConvertToAlias(), platform::FAT::LFN::ConvertToMBCS(), CHRLib::Transcoding< _vFrom, _vTo, _tDispatcher >::MakeTranscoded(), CHRLib::Transcoding< _vFrom, CharSet::Null, _tDispatcher >::MakeTranscoded(), normalize() , 以及 string_end().

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

size_t ystdex::ntctslen | ( | const _tChar * | s,
|  | size_t | n
| ) |  |

inline

计算不超过指定长度的简单 NTCTS 长度。

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

参考 platform::n , 以及 ntctsfind().

函数调用图:

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

ISO C/C++ 标准输入输出接口打开模式转换。

自从
  build 326

参见
  ISO C++11 Table 132 。

注解
  忽略 std::ios_base::ate 。

参见
  http://wg21.cmeerw.net/lwg/issue596 。

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

参考自 platform::ufopen().

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

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

ISO C/C++ 标准输入输出接口打开模式转换。

返回
  若失败（包括空参数情形）为 std::ios_base::openmode() ，否则为对应的值。

参见
  ISO C11 7.21.5.3/3 。

注解
  顺序严格限定。
  支持 x 转换。

自从
  build 326

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

参考 platform::p, YSLib::Text::str , 以及 yunseq.

template<class _tSeqCon >

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

inline

满足容器要求。

自从
  build 408

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

参考 YSLib::UI::y.

template<class _tSeqCon >

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

inline

满足容器要求。

自从
  build 408

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

参考 YSLib::UI::y.

template<typename _type >

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

inline

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

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

函数调用图:
template<typename _type >

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

inline

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

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

函数调用图:
template<typename _type1 , typename _type2 >

bool ystdex::operator!= | ( | observer_ptr< _type1 > | p1,
|  | observer_ptr< _type2 > | p2
| ) |  |

inline

在文件 memory.hpp 第 1021 行定义.

参考 YSLib::Drawing::p1 , 以及 YSLib::Drawing::p2.

template<typename _tChar , class _tTraits >

bool ystdex::operator< | ( | basic_tstring_view< _tChar, _tTraits > | x,
|  | basic_tstring_view< _tChar, _tTraits > | y
| ) |  |

inline

在文件 tstring_view.hpp 第 260 行定义.

参考 YSLib::UI::y.

template<typename _tChar , class _tTraits >

bool ystdex::operator< | ( | basic_tstring_view< _tChar, _tTraits > | x,
|  | decay_t< basic_tstring_view< _tChar, _tTraits >> | y
| ) |  |

inline

在文件 tstring_view.hpp 第 267 行定义.

参考 YSLib::UI::y.

template<typename _tChar , class _tTraits >

bool ystdex::operator< | ( | decay_t< basic_tstring_view< _tChar, _tTraits >> | x,
|  | basic_tstring_view< _tChar, _tTraits > | y
| ) |  |

inline

在文件 tstring_view.hpp 第 274 行定义.

template<typename _tChar , class _tTraits >

bool ystdex::operator< | ( | basic_string_view< _tChar, _tTraits > | x,
|  | basic_string_view< _tChar, _tTraits > | y
| ) |  |

inline

在文件 string_view.hpp 第 382 行定义.

参考 YSLib::UI::y.

template<typename _tChar , class _tTraits >

bool ystdex::operator< | ( | basic_string_view< _tChar, _tTraits > | x,
|  | decay_t< basic_string_view< _tChar, _tTraits >> | y
| ) |  |

inline

自从
  build 642

在文件 string_view.hpp 第 390 行定义.

参考 YSLib::UI::y.

template<typename _tChar , class _tTraits >

bool ystdex::operator< | ( | decay_t< basic_string_view< _tChar, _tTraits >> | x,
|  | basic_string_view< _tChar, _tTraits > | y
| ) |  |

inline

自从
  build 642

在文件 string_view.hpp 第 398 行定义.

template<typename _type >

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

inline

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

参考 platform::bool , 以及 YSLib::UI::y.

template<typename _type1 , typename _type2 >

bool ystdex::operator< | ( | observer_ptr< _type1 > | p1,
|  | observer_ptr< _type2 > | p2
| ) |  |

inline

在文件 memory.hpp 第 1028 行定义.

参考 YSLib::Drawing::p2.

template<typename _tChar , class _tTraits >

std::basic_ostream<_tChar, _tTraits>& ystdex::operator<< | ( | std::basic_ostream< _tChar, _tTraits > & | os,
|  | basic_tstring_view< _tChar, _tTraits > | str
| ) |  |

在文件 tstring_view.hpp 第 282 行定义.

参考 YSLib::Text::str.

template<typename _tChar , class _tTraits >

std::basic_ostream<_tChar, _tTraits>& ystdex::operator<< | ( | std::basic_ostream< _tChar, _tTraits > & | os,
|  | basic_string_view< _tChar, _tTraits > | str
| ) |  |

在文件 string_view.hpp 第 406 行定义.

参考 YSLib::Text::str.

template<typename _tChar , class _tTraits >

bool ystdex::operator== | ( | basic_tstring_view< _tChar, _tTraits > | x,
|  | basic_tstring_view< _tChar, _tTraits > | y
| ) |  |

inline

自从
  build 642

在文件 tstring_view.hpp 第 238 行定义.

参考 YSLib::Drawing::x , 以及 YSLib::UI::y.

template<typename _tChar , class _tTraits >

bool ystdex::operator== | ( | basic_tstring_view< _tChar, _tTraits > | x,
|  | decay_t< basic_tstring_view< _tChar, _tTraits >> | y
| ) |  |

inline

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

参考 YSLib::UI::y.

template<typename _tChar , class _tTraits >

bool ystdex::operator== | ( | decay_t< basic_tstring_view< _tChar, _tTraits >> | x,
|  | basic_tstring_view< _tChar, _tTraits > | y
| ) |  |

inline

在文件 tstring_view.hpp 第 252 行定义.

参考 YSLib::UI::y.

template<typename _tChar , class _tTraits >

bool ystdex::operator== | ( | basic_string_view< _tChar, _tTraits > | x,
|  | basic_string_view< _tChar, _tTraits > | y
| ) |  |

inline

在文件 string_view.hpp 第 359 行定义.

参考 YSLib::Drawing::x , 以及 YSLib::UI::y.

template<typename _tChar , class _tTraits >

bool ystdex::operator== | ( | basic_string_view< _tChar, _tTraits > | x,
|  | decay_t< basic_string_view< _tChar, _tTraits >> | y
| ) |  |

inline

在文件 string_view.hpp 第 366 行定义.

参考 ystdex::basic_string_view< _tChar, _tTraits >::compare() , 以及 YSLib::UI::y.

函数调用图:
template<typename _tChar , class _tTraits >

bool ystdex::operator== | ( | decay_t< basic_string_view< _tChar, _tTraits >> | x,
|  | basic_string_view< _tChar, _tTraits > | y
| ) |  |

inline

自从
  build 642

在文件 string_view.hpp 第 374 行定义.

参考 ystdex::basic_string_view< _tChar, _tTraits >::compare() , 以及 YSLib::UI::y.

函数调用图:
template<typename _type >

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

inline

关系和比较操作。

注解
  未显式声明的部分由 `operators` 提供实现。

参见
  WG21 N4480 5.7[optional.relops] 。
  WG21 N4480 5.8[optional.nullops] 。
  WG21 N4480 5.9[optional.comp_with_t] 。

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

参考 platform::bool , 以及 YSLib::UI::y.

template<typename _type >

bool ystdex::operator== | ( | const optional< _type > & | x,
|  | nullopt_t |
| ) |  |

inline

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

参考 YSLib::Drawing::x.

template<typename _type >

bool ystdex::operator== | ( | const optional< _type > & | x,
|  | const _type & | v
| ) |  |

inline

在文件 optional.h 第 497 行定义.

参考 platform::bool.

template<typename _type >

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

inline

自从
  build 316

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

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

函数调用图:
template<typename _type >

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

inline

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

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

函数调用图:
template<typename _type1 , typename _type2 >

bool ystdex::operator== | ( | observer_ptr< _type1 > | p1,
|  | observer_ptr< _type2 > | p2
| ) |  |

inline

自从
  build 675

在文件 memory.hpp 第 1014 行定义.

参考 YSLib::Drawing::p1 , 以及 YSLib::Drawing::p2.

template<typename _tIter >

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

inline

管道匹配操作符。

注解
  使用 ADL `make_transform` 。

自从
  build 650

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

参考 YSLib::i , 以及 yforward.

template<typename _tIter >

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

inline

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

参考 YSLib::i , 以及 yforward.

template<typename _tIter >

auto ystdex::operator| | ( | _tIter && | i,
|  | get_indirect_t |
| ) |  | -> decltype(make_transform(std::forward<decltype( i )>( i ), iterator_transformation::indirect<>()))

inline

自从
  build 680

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

参考 YSLib::i , 以及 yforward.

template<typename _tIter >

auto ystdex::operator| | ( | _tIter && | i,
|  | get_get_t |
| ) |  | -> decltype(make_transform(std::forward<decltype( i )>( i ), iterator_transformation::get<>()))

inline

自从
  build 680

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

参考 YSLib::i , 以及 yforward.

template<typename _type , typename... _tParams>

auto ystdex::pack_object | ( | _tParams &&... | args | ) | -> decltype( details::pack_obj_impl<_type>::pack(std::forward<decltype( args )>( args )...) )

打包对象：通过指定参数构造对象。

自从
  build 588
  build 617

对 std::unique_ptr 和 std::shared_ptr 的实例，使用 make_unique 和 std::make_shared 构造，否则直接使用参数构造。

在文件 memory.hpp 第 1061 行定义.

参考 CHRLib::args, ystdex::details::pack_obj_impl< _type >::pack() , 以及 yforward.

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

std::shared_ptr<packed_task_t<_fCallable&&, _tParams&&...> > ystdex::pack_shared_task | ( | _fCallable && | f,
|  | _tParams &&... | args
| ) |  |

在文件 future.hpp 第 106 行定义.

参考 CHRLib::args, YSLib::IO::f, make_shared() , 以及 yforward.

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

packed_task_t<_fCallable&&, _tParams&&...> ystdex::pack_task | ( | _fCallable && | f,
|  | _tParams &&... | args
| ) |  |

自从
  build 359

在文件 future.hpp 第 98 行定义.

参考 CHRLib::args, YSLib::IO::f , 以及 yforward.

参考自 ystdex::thread_pool::wait_to_enqueue().

这是这个函数的调用关系图:
template<size_t _vWidth, typename _tIn >

make_width_int<_vWidth>::unsigned_type ystdex::pack_uint | ( | _tIn | first,
|  | _tIn | last
| ) |  |

使用迭代器对指定的范围中的字节表示的序列构造无符号整数。

前置条件
  静态断言：整数宽度非零且为 byte 类型宽度的整数倍。
  范围中的迭代器可解引用。

自从
  build 603

在文件 cstdint.hpp 第 260 行定义.

参考 is_undereferenceable(), YSLib::Drawing::x, YSLib::UI::y , 以及 yconstraint.

函数调用图:
template<class _tCon >

bool ystdex::pop_back_val | ( | _tCon & | con,
|  | const typename _tCon::value_type & | value
| ) |  |

若容器末尾存在指定值的元素则移除。

自从
  build 545

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

template<class _tCon >

bool ystdex::pop_front_val | ( | _tCon & | con,
|  | const typename _tCon::value_type & | value
| ) |  |

若容器起始存在指定值的元素则移除。

自从
  build 545

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

template<typename _type >

_type ystdex::pow_int | ( | _type | x,
|  | size_t | n
| ) |  |

inline

计算整数次幂。

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

template<typename _type >

enable_if_t<or_<is_object<_type>, is_void<_type> >::value, void*> ystdex::pvoid | ( | _type * | p | ) |

inline

取 `void*` 类型的指针。

注解
  适合 std::fprintf 等的 `p` 转换规格。

自从
  build 563

在文件 addressof.hpp 第 101 行定义.

参考 platform::p.

参考自 pvoid_ref() , 以及 NPL::A1::SetupTraceDepth().

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

enable_if_t<is_function<_type>::value, void*> ystdex::pvoid | ( | _type * | p | ) |

inline

注解
  ISO C++11 指定函数指针 `reinterpret_cast` 为对象指针有条件支持。

在文件 addressof.hpp 第 108 行定义.

参考 platform::p.

template<typename _type >

void* ystdex::pvoid_ref | ( | _type && | ref | ) |

inline

返回
  非空指针。

自从
  build 552

在文件 addressof.hpp 第 119 行定义.

参考 pvoid() , 以及 ref().

函数调用图:
template<typename _type >

_type ystdex::quad | ( | _type | x | ) |

inline

计算四次方。

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

参考 square().

函数调用图:
template<typename _tString >

_tString ystdex::quote | ( | const _tString & | str,
|  | typename string_traits< _tString >::value_type | c = `typename string_traits<_tString>::value_type('"')`
| ) |  |

inline

取添加前缀和后缀的字符串。

前置条件
  断言：删除的字符串不大于串长。

自从
  build 598

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

参考 CHRLib::c.

参考自 NPL::SXML::ConvertDocumentNode(), NPL::EscapeLiteral(), NPL::Literalize(), YReader::ShlReader::LoadBookmarks(), YSLib::Drawing::to_string() , 以及 YSLib::Drawing::GBinaryGroup< _type >::to_string().

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

enable_if_t<!is_convertible<_tString2, typename string_traits<_tString>::value_type>::value ,_tString> ystdex::quote | ( | const _tString & | str,
|  | const _tString2 & | s
| ) |  |

inline

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

参考 CHRLib::s.

template<typename _tString , typename _tPrefix , typename _tSuffix >

_tString ystdex::quote | ( | const _tString & | str,
|  | const _tPrefix & | pfx,
|  | const _tSuffix & | sfx
| ) |  |

inline

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

template<typename _type >

void ystdex::raise_exception | ( | _type && | e | ) |

inline

引发异常：若当前存在正在处理的异常则抛出嵌套异常，否则抛出异常。

自从
  build 657

在文件 ystdex/exception.h 第 82 行定义.

参考 CHRLib::e , 以及 yforward.

template<size_t _vWidth>

make_width_int<_vWidth>::unsigned_type ystdex::read_uint_be | ( | const byte * | buf | ) |

inline

从字节缓冲区读取指定宽的大端序无符号整数。

前置条件
  指针参数非空。

自从
  build 623

在文件 cstdint.hpp 第 303 行定义.

参考 YSLib::Text::buf , 以及 yconstraint.

template<size_t _vWidth>

make_width_int<_vWidth>::unsigned_type ystdex::read_uint_le | ( | const byte * | buf | ) |

inline

从字节缓冲区读取指定宽的小端序无符号整数。

自从
  build 608

在文件 cstdint.hpp 第 315 行定义.

参考 YSLib::Text::buf, make_reverse_iterator() , 以及 yconstraint.

函数调用图:
template<typename _type >

lref<_type> ystdex::ref | ( | _type & | t | ) |

inline

构造引用包装。

在文件 ref.hpp 第 120 行定义.

参考自 YSLib::AccessNode(), YSLib::UI::Styles::AddHandlers(), YSLib::UI::AddWidgets(), YSLib::UI::AddWidgetsZ(), platform_ex::Attach(), ystdex::call_once_init< YSLib::GUIApplication::InitBlock, once_flag >::call_once_init(), YSLib::UI::MLinearUIContainer::Contains(), CHRLib::ConvertCharacter(), YSLib::UI::FetchTopLevel(), NPL::ImplRet(), YSLib::UI::Widget::InitializeEvents(), YSLib::UI::Panel::MoveToFront(), YSLib::UI::MTextList::MTextList(), YSLib::UI::MLinearUIContainer::operator-=(), NPL::PrintNode(), pvoid_ref(), NPL::A1::Reduce(), NPL::A1::ReduceChildren(), YReader::TextInfoBox::Refresh(), YSLib::UI::RemoveWidgets(), NPL::A1::ReplaceSeparatedChildren(), YSLib::UI::SetRendererOnHover(), YSLib::Drawing::Font::SetStyle(), stable_unique(), NPL::A1::TransformForSeparator(), NPL::A1::TransformForSeparatorRecursive(), YReader::ShlTextReader::BaseSession::~BaseSession() , 以及 ystdex::call_once_init< YSLib::GUIApplication::InitBlock, once_flag >::~call_once_init().

这是这个函数的调用关系图:
template<class _type >

void ystdex::ref | ( | const _type && |  | ) |

delete

template<typename _type >

_type& ystdex::ref_opt | ( | optional< _type > && | o | ) |

inline

从 optional 实例的临时对象取左值引用。

注解
  YStandardEx 扩展。

警告
  应仅在确认生存期时使用。

在文件 optional.h 第 545 行定义.

参考自 ref_opt().

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

_type& ystdex::ref_opt | ( |  | ) |

inline

在文件 optional.h 第 551 行定义.

参考 ref_opt().

函数调用图:

void ystdex::reraise | ( | int | sig | ) |

调用 restore_signal 重置默认信号处理器后调用 `raise` 引发信号。

注解
  异步信号安全。
  仅在确保依赖 POSIX 或其它扩展定义的确定行为时允许在多线程环境下使用。

警告
  ISO C11 指定多线程环境调用 `signal` 行为未定义。

在文件 csignal.cpp 第 34 行定义.

参考 restore_signal().

函数调用图:

void ystdex::restore_signal | ( | int | sig | ) |

inline

调用 `signal` 重置默认信号处理器。

自从
  build 623

在文件 csignal.h 第 41 行定义.

参考自 reraise().

这是这个函数的调用关系图:
template<class _tString >

_tString&& ystdex::restrict_length | ( | _tString && | str,
|  | const typename string_traits< _tString >::size_type | n
| ) |  |

inline

限制长度不超过指定参数。

自从
  build 608

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

参考 YSLib::Text::str.

参考自 platform::FAT::LFN::ConvertToMBCS().

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

void ystdex::rethrow_badstate | ( | std::basic_ios< _tChar, _tTraits > & | ios,
|  | std::ios_base::iostate | state = `std::ios_base::badbit`
| ) |  |

设置流状态并重新抛出当前异常。

注解
  一个主要用例为实现标准库要求的格式/非格式输入/输出函数。

参见
  WG21/N4567 27.7.2.2.1[istream.formatted.reqmts] 。
  WG21/N4567 27.7.2.3[istream.unformatted]/1 。
  WG21/N4567 27.7.3.6.1[ostream.formatted.reqmts] 。
  WG21/N4567 27.7.3.7[ostream.unformatted]/1 。
  http://wg21.cmeerw.net/lwg/issue91 。

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

参考 setstate().

参考自 extract() , 以及 NPL::operator>>().

函数调用图:

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

_tVector ystdex::retry_for_vector | ( | typename _tVector::size_type | s,
|  | _func | f
| ) |  |

从第一参数指定的起始缓冲区大小循环取向量结果，按需扩大缓冲区。

前置条件
  断言：第一参数不等于 0 。

注解
  可用于支持 `max_size` 和 `resize` 的字符串类型。

参见
  http://wg21.cmeerw.net/lwg/issue2466 。

自从
  build 699

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

参考 YSLib::IO::f, yconstraint , 以及 yimpl.

template<typename _fCond , typename _fCallable , typename... _tParams>

result_of_t<_fCallable&&(_tParams&&...)> ystdex::retry_on_cond | ( | _fCond | cond,
|  | _fCallable && | f,
|  | _tParams &&... | args
| ) |  |

循环重复调用：代替直接使用 do-while 语句以避免过多引入作用域外的变量。

模板参数

  _fCond | 判断条件。
  _fCallable | 可调用对象类型。
  _tParams | 参数类型。

注解
  条件接受调用结果或没有参数。

自从
  build 634

参见
  object_result_t

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

参考 CHRLib::args, invoke_nonvoid() , 以及 yforward.

参考自 NPL::A1::Reduce() , 以及 platform::FileDescriptor::WriteContent().

函数调用图:

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

_type ystdex::round_in | ( | _type | x,
|  | _type | err
| ) |  |

inline

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

参考 is_zero() , 以及 round_in_nocheck().

参考自 YSLib::Drawing::ImagePages::ZoomByRatio().

函数调用图:

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

_type ystdex::round_in_nocheck | ( | _type | x,
|  | _type | err
| ) |  |

inline

指定误差内舍入。

前置条件
  参数为有限值。

警告
  不检查参数。

注解
  不检查误差非零。
  使用 ADL `round` 。

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

参考自 round_in().

这是这个函数的调用关系图:
template<class _tString >

_tString&& ystdex::rtrim | ( | _tString && | str,
|  | typename string_traits< _tString >::value_type | c
| ) |  |

inline

删除字符串中指定的连续后缀字符。

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

参考 erase_right() , 以及 YSLib::Text::str.

参考自 main(), YSLib::IO::NormalizeDirectoryPathTail() , 以及 trim().

函数调用图:

这是这个函数的调用关系图:
template<class _tString >

_tString&& ystdex::rtrim | ( | _tString && | str,
|  | const remove_reference_t< _tString > & | t
| ) |  |

inline

自从
  build 659

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

参考 erase_right() , 以及 YSLib::Text::str.

函数调用图:
template<class _tString >

_tString&& ystdex::rtrim | ( | _tString && | str,
|  | typename string_traits< _tString >::const_pointer | t = `&to_array<typename string_traits<_tString>::value_type>(" \f\n\r\t\v")[0]`
| ) |  |

inline

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

自从
  build 600

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

参考 erase_right(), YSLib::Text::str , 以及 yconstraint.

函数调用图:
template<class _tAssocCon , typename _tKey >

std::pair<typename _tAssocCon::const_iterator, bool> ystdex::search_map | ( | const _tAssocCon & | con,
|  | const _tKey & | k
| ) |  |

按指定键搜索指定关联容器。

返回
  一个用于表示结果的 std::pair 值，其成员 `first` 为迭代器， `second` 表示是否没有找到。

注解
  使用 ADL cend 和 extract_key 。

自从
  build 677

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

参考 ystdex::cpp2011::end() , 以及 YSLib::i.

参考自 YSLib::UI::GetEvent(), insert_or_assign(), insert_or_assign_hint(), search_map(), try_emplace() , 以及 try_emplace_hint().

函数调用图:

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

std::pair<typename _tAssocCon::iterator, bool> ystdex::search_map | ( | _tAssocCon & | con,
|  | const _tKey & | k
| ) |  |

inline

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

参考 as_const(), cast_mutable() , 以及 search_map().

函数调用图:
template<class _tAssocCon , typename _tKey >

std::pair<typename _tAssocCon::const_iterator, bool> ystdex::search_map | ( | const _tAssocCon & | con,
|  | typename _tAssocCon::const_iterator | hint,
|  | const _tKey & | k
| ) |  |

按指定键和提示的迭代器位置搜索指定关联容器。

自从
  build 680

前置条件
  容器非空或提示的迭代器位置指向尾部。

注解
  使用 ADL cbegin 。

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

参考 ystdex::cpp2014::cbegin(), ystdex::cpp2014::cend(), extract_key(), search_map() , 以及 yconstraint.

函数调用图:
template<class _tAssocCon , typename _tKey >

std::pair<typename _tAssocCon::iterator, bool> ystdex::search_map | ( | _tAssocCon & | con,
|  | typename _tAssocCon::const_iterator | hint,
|  | const _tKey & | k
| ) |  |

inline

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

参考 as_const(), cast_mutable() , 以及 search_map().

函数调用图:
template<typename _func , class _tAssocCon , typename... _tParams>

std::pair<typename _tAssocCon::const_iterator, bool> ystdex::search_map | ( | _func | f,
|  | const _tAssocCon & | con,
|  | _tParams &&... | args
| ) |  |

按指定键值搜索指定映射并执行操作。

前置条件
  最后的参数构造新的值。

返回
  插入成员的迭代器。

注解
  行为类似 std::map::operator[] 。

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

参考 CHRLib::args, YSLib::IO::f, search_map() , 以及 yforward.

函数调用图:
template<typename _func , class _tAssocCon , typename... _tParams>

std::pair<typename _tAssocCon::iterator, bool> ystdex::search_map | ( | _func | f,
|  | _tAssocCon & | con,
|  | _tParams &&... | args
| ) |  |

inline

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

参考 CHRLib::args, as_const(), cast_mutable(), search_map() , 以及 yforward.

函数调用图:
template<typename _func >

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

inline

顺序递归调用。

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

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

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

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

inline

自从
  build 595

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

参考 YSLib::IO::f, seq_apply() , 以及 yforward.

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

void ystdex::seq_insert | ( | _tCon & | con,
|  | _tParams &&... | args
| ) |  |

inline

顺序插入值至指定容器。

自从
  build 338

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

参考 CHRLib::args, seq_apply() , 以及 yforward.

函数调用图:
template<typename _type >

const _type& ystdex::set_value_move | ( | const _type & | x | ) |

inline

转移集合元素。

后置条件
  转移后元素和参数比较相等。

自从
  build 673

在文件 set.hpp 第 49 行定义.

参考 YSLib::Drawing::x.

参考自 ystdex::mapped_set< _type, _fComp, _tAlloc >::insert().

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

int ystdex::setnbuf | ( | std::FILE * | stream | ) |

inline

关闭流缓冲。

前置条件
  参数非空。

自从
  build 566

在文件 ystdex/cstdio.h 第 61 行定义.

参考 yconstraint.

template<typename _tChar , class _tTraits >

void ystdex::setstate | ( | std::basic_ios< _tChar, _tTraits > & | ios,
|  | std::ios_base::iostate | state
| ) |  |

设置流状态。

注解
  无异常抛出：和直接调用 std::basic_ios 的 setstate 成员函数不同。
  不复用标准库实现的内部接口。

在文件 ios.hpp 第 44 行定义.

参考自 rethrow_badstate().

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

auto ystdex::sfmt | ( | const _tChar * | fmt,
|  |  | ...
| ) |  | -> decltype(vsfmt(fmt, std::declval<std::va_list>()))

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

注解
  使用 ADL 访问可变参数。
  Clang++ 对模板声明 attribute 直接提示格式字符串类型错误。

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

参考 CHRLib::args, YSLib::Text::str , 以及 vsfmt().

参考自 NPL::A1::EvaluateContextFirst(), YSLib::Drawing::FontCache::FontCache(), NPL::A1::LoadNode(), NPL::A1::LoadNodeSequence(), YSLib::Drawing::MultiBitmapData::LockPage(), platform::LogWithSource(), main(), NPL::A1::FormContextHandler::operator()(), NPL::A1::FunctionContextHandler::operator()() , 以及 YSLib::Drawing::Typeface::Typeface().

函数调用图:

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

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

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

参见
  ystdex::sfmt

自从
  build 350

template<typename _func , typename _type = void>

std::shared_ptr<_type> ystdex::share_guard | ( | _func | f,
|  | _type * | p = `{}`
| ) |  |

inline

创建共享作用域守护。

自从
  build 676

在文件 scope_guard.hpp 第 106 行定义.

template<class _tRange >

auto ystdex::size | ( | const _tRange & | c | ) | -> decltype(c.size())

inline

类容器访问。

参见
  WG21/N4280 。
  WG21/N4567 24.8[iterator.container] 。

自从
  build 663

在文件 range.hpp 第 233 行定义.

参考 CHRLib::c.

参考自 YSLib::Drawing::ImagePages::AdjustOffset(), YSLib::UI::Menu::AdjustSize(), ystdex::basic_tstring_view< _tChar, _tTraits, 0 >::compare(), ystdex::basic_tstring_view< _tChar, _tTraits, 0 >::compare_remained(), YSLib::Text::DetectBOM(), YSLib::Drawing::DrawCornerArrow(), YReader::FetchEncodingString(), YSLib::UI::ImplDeDtor(), YSLib::UI::Menu::IsItemEnabled(), YSLib::UI::TextList::LocateViewPosition(), main(), ystdex::cpp2014::make_unique(), make_unique_default_init(), make_unique_with(), YReader::ShlTextReader::OnKeyDown(), platform::UnmapDelete::operator()(), YSLib::UI::Menu::operator-=(), ystdex::path< _tSeqCon, _tTraits >::operator/=(), ystdex::details::range_size(), range_size(), platform::ReadLink(), YSLib::Drawing::RectDrawCornerArrow(), YSLib::Drawing::TextRegion::Scroll(), YSLib::UI::TextList::SelectFirst(), YSLib::UI::TextList::SelectLast(), YSLib::UI::TextList::SetSelected(), platform::FileDescriptor::SetSize(), YReader::ShlTextReader::SettingSession::SettingSession(), string_length(), ystdex::basic_tstring_view< _tChar, _tTraits, 0 >::substr(), YSLib::UI::TextList::TextList(), vector_concat(), write() , 以及 write_literal().

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

size_t ystdex::size | ( | const | _type(&)[_vN] | ) |

inline

在文件 range.hpp 第 239 行定义.

template<typename _tElem >

size_t ystdex::size | ( | std::initializer_list< _tElem > | il | ) |

inline

参见
  http://wg21.cmeerw.net/cwg/issue1591 。

在文件 range.hpp 第 247 行定义.

template<typename... _tParams>

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

inline

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

自从
  build 594

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

template<class _tCon >

void ystdex::sort_unique | ( | _tCon & | con | ) |

inline

排序指定序列容器，保留不重复元素。

前置条件
  容器的迭代器满足随机迭代器要求。

自从
  build 414

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

参考 ystdex::cpp2011::begin(), ystdex::cpp2011::end() , 以及 sort_unique().

函数调用图:
template<typename _type >

_type ystdex::square | ( | _type | x | ) |

inline

计算平方。

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

参考 YSLib::Drawing::x.

参考自 quad().

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

std::unique_ptr<_tDst> ystdex::static_pointer_cast | ( | std::unique_ptr< _type > | p | ) |

智能指针转换。

自从
  build 595

在文件 memory.hpp 第 847 行定义.

参考自 polymorphic_downcast().

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

std::unique_ptr<_tDst, _tDeleter> ystdex::static_pointer_cast | ( | std::unique_ptr< _type, _tDeleter > | p | ) |

在文件 memory.hpp 第 853 行定义.

template<typename _type , typename _tString , typename... _tParams>

_type ystdex::ston | ( | const _tString & | str,
|  | _tParams &&... | args
| ) |  |

inline

转换表示数的字符串。

自从
  build 542

待办事项:

  支持 std::string 以外类型字符串。

  支持标准库以外的转换。

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

参考 CHRLib::args , 以及 yforward.

template<typename _tChar , typename _tSize , class _tTraits = std::char_traits<_tChar>, _tSize _vNPos = _tSize(-1)>

_tSize ystdex::str_find | ( | const _tChar * | p,
|  | _tSize | sz,
|  | _tChar | c,
|  | _tSize | pos
| ) |  |

inline

查找字符或子串。

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

参考 CHRLib::c, platform::p , 以及 yconstraint.

template<typename _tChar , typename _tSize , class _tTraits = std::char_traits<_tChar>, _tSize _vNPos = _tSize(-1)>

_tSize ystdex::str_find | ( | const _tChar * | p,
|  | _tSize | sz,
|  | const _tChar * | s,
|  | _tSize | pos,
|  | _tSize | n
| ) |  |

inline

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

参考 platform::n, platform::p, CHRLib::s , 以及 yconstraint.

template<typename _tChar , typename _tSize , class _tTraits = std::char_traits<_tChar>, _tSize _vNPos = _tSize(-1)>

_tSize ystdex::str_find_first_not_of | ( | const _tChar * | p,
|  | _tSize | sz,
|  | _tChar | c,
|  | _tSize | pos
| ) |  |

inline

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

参考 CHRLib::c, platform::p , 以及 yconstraint.

template<typename _tChar , typename _tSize , class _tTraits = std::char_traits<_tChar>, _tSize _vNPos = _tSize(-1)>

_tSize ystdex::str_find_first_not_of | ( | const _tChar * | p,
|  | _tSize | sz,
|  | const _tChar * | s,
|  | _tSize | pos,
|  | _tSize | n
| ) |  |

inline

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

参考 platform::n, platform::p, CHRLib::s , 以及 yconstraint.

template<typename _tChar , typename _tSize , class _tTraits = std::char_traits<_tChar>, _tSize _vNPos = _tSize(-1)>

_tSize ystdex::str_find_first_of | ( | const _tChar * | p,
|  | _tSize | sz,
|  | const _tChar * | s,
|  | _tSize | pos,
|  | _tSize | n
| ) |  |

inline

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

参考 platform::n, platform::p, CHRLib::s , 以及 yconstraint.

template<typename _tChar , typename _tSize , class _tTraits = std::char_traits<_tChar>, _tSize _vNPos = _tSize(-1)>

_tSize ystdex::str_find_last_not_of | ( | const _tChar * | p,
|  | _tSize | sz,
|  | _tChar | c,
|  | _tSize | pos
| ) |  |

inline

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

参考 CHRLib::c, platform::p , 以及 yconstraint.

template<typename _tChar , typename _tSize , class _tTraits = std::char_traits<_tChar>, _tSize _vNPos = _tSize(-1)>

_tSize ystdex::str_find_last_not_of | ( | const _tChar * | p,
|  | _tSize | sz,
|  | const _tChar * | s,
|  | _tSize | pos,
|  | _tSize | n
| ) |  |

inline

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

参考 platform::n, platform::p, CHRLib::s , 以及 yconstraint.

template<typename _tChar , typename _tSize , class _tTraits = std::char_traits<_tChar>, _tSize _vNPos = _tSize(-1)>

_tSize ystdex::str_find_last_of | ( | const _tChar * | p,
|  | _tSize | sz,
|  | const _tChar * | s,
|  | _tSize | pos,
|  | _tSize | n
| ) |  |

inline

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

参考 platform::n, platform::p, CHRLib::s , 以及 yconstraint.

template<typename _tChar , typename _tSize , class _tTraits = std::char_traits<_tChar>, _tSize _vNPos = _tSize(-1)>

_tSize ystdex::str_rfind | ( | const _tChar * | p,
|  | _tSize | sz,
|  | _tChar | c,
|  | _tSize | pos
| ) |  |

inline

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

参考 CHRLib::c, platform::p , 以及 yconstraint.

template<typename _tChar , typename _tSize , class _tTraits = std::char_traits<_tChar>, _tSize _vNPos = _tSize(-1)>

_tSize ystdex::str_rfind | ( | const _tChar * | p,
|  | _tSize | sz,
|  | const _tChar * | s,
|  | _tSize | pos,
|  | _tSize | n
| ) |  |

inline

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

参考 min(), platform::n, platform::p, CHRLib::s , 以及 yconstraint.

函数调用图:

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

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

参考 strcpycat().

函数调用图:

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

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

返回
  目标参数。

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

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

inline

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

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

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

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

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

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

返回
  返回目标参数。

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

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

参考 CHRLib::d.

参考自 strcatdup().

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

bool ystdex::stream_equal | ( | std::basic_istream< _tChar, _tTraits > & | a,
|  | std::basic_istream< _tChar, _tTraits > & | b
| ) |  |

比较指定流的内容相等。

注解
  不设置流状态，需要注意是否设置忽略空白符。

自从
  build 636

在文件 istream.hpp 第 45 行定义.

参考 ystdex::cpp2014::equal().

函数调用图:
template<typename _tChar , class _tTraits >

bool ystdex::streambuf_equal | ( | std::basic_streambuf< _tChar, _tTraits > & | a,
|  | std::basic_streambuf< _tChar, _tTraits > & | b
| ) |  |

比较指定流缓冲区的内容相等。

注解
  流读取失败视为截止。

自从
  build 636

在文件 streambuf.hpp 第 45 行定义.

参考 ystdex::cpp2014::equal().

参考自 platform::HaveSameContents().

函数调用图:

这是这个函数的调用关系图:
template<class _tRange >

auto ystdex::string_begin | ( | _tRange & | c | ) | -> decltype(c.begin())

inline

注解
  使用 ADL 访问字符串范围。
  同 std::begin 和 std::end ，但字符数组除外。
  此处 string_end 语义和 boost::end 相同，但对数组类型不同于 std::end 。

Bug:
  decltype 指定的返回类型不能使用 ADL 。
  参见
    WG21 N3936 20.4.7[iterator.range] 。
  自从
    build 519

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

参考 ystdex::cpp2011::begin() , 以及 CHRLib::c.

参考自 begins_with(), ends_with(), main(), YSLib::Drawing::PrintLine(), YSLib::Drawing::PrintString(), YSLib::Drawing::PutLine() , 以及 YSLib::Drawing::PutString().

函数调用图:

这是这个函数的调用关系图:
template<class _tRange >

auto ystdex::string_begin | ( | const _tRange & | c | ) | -> decltype(c.begin())

inline

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

参考 ystdex::cpp2011::begin() , 以及 CHRLib::c.

函数调用图:
template<typename _tChar >

_tChar* ystdex::string_begin | ( | _tChar * | str | ) |

inline

自从
  build 664

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

参考 YSLib::Text::str , 以及 yconstraint.

template<typename _tElem >

auto ystdex::string_begin | ( | std::initializer_list< _tElem > | il | ) | -> decltype(il.begin())

inline

参见
  http://wg21.cmeerw.net/cwg/issue1591 。

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

template<class _tRange >

auto ystdex::string_end | ( | _tRange & | c | ) | -> decltype(c.end())

inline

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

参考 CHRLib::c , 以及 ystdex::cpp2011::end().

参考自 begins_with(), ends_with(), main(), YSLib::Drawing::PrintLine(), YSLib::Drawing::PrintString(), YSLib::Drawing::PutLine() , 以及 YSLib::Drawing::PutString().

函数调用图:

这是这个函数的调用关系图:
template<class _tRange >

auto ystdex::string_end | ( | const _tRange & | c | ) | -> decltype(c.end())

inline

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

参考 CHRLib::c , 以及 ystdex::cpp2011::end().

函数调用图:
template<typename _tChar >

_tChar* ystdex::string_end | ( | _tChar * | str | ) |

inline

自从
  build 664

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

参考 ntctslen() , 以及 YSLib::Text::str.

函数调用图:
template<typename _tElem >

auto ystdex::string_end | ( | std::initializer_list< _tElem > | il | ) | -> decltype(il.end())

inline

参见
  http://wg21.cmeerw.net/cwg/issue1591 。

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

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

inline

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

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

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

template<class _tSeqCon >

void ystdex::swap | ( | container_adaptor< _tSeqCon > & | x,
|  | container_adaptor< _tSeqCon > & | y
| ) |  |

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

参考 YSLib::Drawing::x , 以及 YSLib::UI::y.

参考自 YSLib::UI::TreeList::Bind(), YSLib::UI::ImplDeDtor(), ystdex::indirect_input_iterator< _tIter >::indirect_input_iterator(), YSLib::UI::TextList::InvalidateSelected2(), ystdex::one_shot< _func, _tRes, _tState >::one_shot(), ystdex::one_shot< _func, void, _tState >::one_shot(), YSLib::Drawing::PlotLineSeg(), ystdex::details::state_guard_traits< _type, _tToken, true >::restore(), YSLib::RestrictLessEqual(), ystdex::details::state_guard_traits< _type, _tToken, true >::save(), YSLib::Drawing::CompactPixmap::SetSizeSwap(), stable_unique(), ystdex::basic_tstring_view< _tChar, _tTraits, 0 >::swap(), YSLib::Messaging::Message::swap(), ystdex::nptr< _type >::swap(), ystdex::basic_string_view< _tChar, _tTraits >::swap(), ystdex::single_thread::unique_lock< _tMutex >::swap(), ystdex::details::any_base::swap(), ystdex::any::swap(), swap_underlying(), YSLib::DS::ShlDS::SwapDesktops(), YSLib::UI::TextPlaceholder::SwapLabel(), YSLib::UI::SwapSizeOf(), YSLib::UI::TextPlaceholder::SwapText(), YSLib::UI::TextPlaceholder::SwapTextBox(), YSLib::Application::Switch(), platform_ex::UpdateKeyStates() , 以及 YSLib::UI::TextBox::UpdateTextBoxClippedText().

这是这个函数的调用关系图:
template<class _tSeqCon >

void ystdex::swap | ( | sequence_container_adaptor< _tSeqCon > & | x,
|  | sequence_container_adaptor< _tSeqCon > & | y
| ) |  |

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

参考 YSLib::Drawing::x , 以及 YSLib::UI::y.

参考自 ystdex::container_adaptor< _tSeqCon >::swap().

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

void ystdex::swap | ( | optional< _type > & | x,
|  | optional< _type > & | y
| ) |  |

参见
  WG21 N4480 5.10[optional.specalg] 。

在文件 optional.h 第 513 行定义.

参考 YSLib::UI::y.

参考自 ystdex::optional< _type >::swap().

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

void ystdex::swap | ( | observer_ptr< _type > & | p1,
|  | observer_ptr< _type > & | p2
| ) |  |

inline

在文件 memory.hpp 第 1036 行定义.

参考 YSLib::Drawing::p2.

参考自 ystdex::observer_ptr< _type >::swap().

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

void ystdex::throw_error | ( | std::error_code | ec,
|  | _tParams &&... | args
| ) |  |

inline

抛出错误： std::system_error 或允许相同构造函数参数的异常。

异常

  _type | 使用参数构造的异常。

自从
  build 637

在文件 ystdex/exception.h 第 162 行定义.

参考 CHRLib::args , 以及 yforward.

参考自 ystdex::single_thread::unique_lock< _tMutex >::check_lock(), platform::FAT::CheckColons(), platform::CreateHardLink(), platform::CreateSymbolicLink(), YSLib::IO::EnsureDirectory(), platform::ReadLink(), platform::TryGetCurrentWorkingDirectory() , 以及 ystdex::single_thread::unique_lock< _tMutex >::unlock().

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

void ystdex::throw_error | ( | std::error_condition | cond,
|  | _tParams &&... | args
| ) |  |

inline

在文件 ystdex/exception.h 第 168 行定义.

参考 CHRLib::args , 以及 yforward.

template<class _type = std::system_error, typename... _tParams>

void ystdex::throw_error | ( | int | ev,
|  | _tParams &&... | args
| ) |  |

inline

在文件 ystdex/exception.h 第 174 行定义.

参考 CHRLib::args , 以及 yforward.

template<class _type = std::system_error, typename... _tParams>

void ystdex::throw_error | ( | int | ev,
|  | const std::error_category & | ecat,
|  | _tParams &&... | args
| ) |  |

inline

在文件 ystdex/exception.h 第 180 行定义.

参考 CHRLib::args , 以及 yforward.

template<typename _type , size_t _vN, typename _tSrc >

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

inline

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

自从
  build 337

在文件 array.hpp 第 87 行定义.

template<typename _type , size_t _vN>

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

inline

在文件 array.hpp 第 93 行定义.

template<typename _type , size_t _vN, typename _tSrcElement >

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

inline

在文件 array.hpp 第 99 行定义.

template<typename _type , size_t _vN, typename _tSrcElement >

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

inline

在文件 array.hpp 第 108 行定义.

template<typename _type , size_t _vN, typename _tSrcElement >

std::array<_type, _vN> ystdex::to_array | ( | std::initializer_list< _tSrcElement > | il | ) |

inline

自从
  build 636

在文件 array.hpp 第 119 行定义.

参考 min().

函数调用图:

std::string ystdex::to_string | ( | const std::thread::id & |  | ) |

转换 `thread::id` 为字符串表示。

注解
  使用 `operator<<` 实现。

自从
  build 543

参考自 YReader::FetchEncodingString(), get_this_thread_id(), YSLib::UI::ParseRect(), YReader::ShlReader::SaveBookmarks(), YSLib::ValueNode::StringifyToNode(), YSLib::Drawing::GBinaryGroup< _type >::to_string(), to_string(), YReader::TextInfoBox::UpdateData(), YReader::SettingPanel::UpdateInfo(), YSLib::UI::BorderResizer::Wrap() , 以及 platform::FileDescriptor::WriteContent().

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

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

inline

转换为字符串： std::basic_string 的实例对象。

注解
  可与标准库的同名函数共用以避免某些类型转换警告，如 G++ 的 [-Wsign-promo] 。

自从
  build 308

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

参考 to_string().

函数调用图:

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

inline

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

参考 to_string().

函数调用图:
template<typename _type >

enable_if_t<is_enum<_type>::value, std::string> ystdex::to_string | ( | _type | val | ) |

inline

自从
  build 538

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

参考 to_string() , 以及 underlying().

函数调用图:
template<typename _type , class _tStream = std::ostringstream>

enable_if_t<is_class<_type>::value, decltype(std::declval<_tStream&>).str())> ystdex::to_string | ( | const _type & | x | ) |

自从
  build 664

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

参考 YSLib::Drawing::x.

参考自 to_string().

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

std::wstring ystdex::to_wstring | ( | unsigned char | val | ) |

inline

自从
  build 565

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

参考 to_wstring().

参考自 to_wstring().

函数调用图:

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

std::wstring ystdex::to_wstring | ( | unsigned short | val | ) |

inline

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

参考 to_wstring().

函数调用图:
template<typename _type >

enable_if_t<is_enum<_type>::value, std::wstring> ystdex::to_wstring | ( | _type | val | ) |

inline

自从
  build 664

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

参考 to_wstring() , 以及 underlying().

函数调用图:
template<typename _type , class _tStream = std::wostringstream>

enable_if_t<is_class<_type>::value, decltype(std::declval<_tStream&>).str())> ystdex::to_wstring | ( | const _type & | x | ) |

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

参考 YSLib::Drawing::x.

参考自 to_wstring().

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

_tChar ystdex::tolower | ( | _tChar | c | ) |

inline

转换大小写字符。

注解
  和 ISO C 标准库对应接口不同而和 ISO C++ <locale> 中的接口类似， 参数和返回值是字符类型而不是对应的整数类型。

自从
  build 605

在文件 cctype.h 第 137 行定义.

参考自 platform::FAT::EntryData::GenerateAlias() , 以及 ntctsicmp().

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

char ystdex::tolower | ( | char | c | ) |

inline

在文件 cctype.h 第 142 行定义.

参考 YSLib::char.

template<typename _tChar >

_tChar ystdex::toupper | ( | _tChar | c | ) |

inline

在文件 cctype.h 第 150 行定义.

char ystdex::toupper | ( | char | c | ) |

inline

在文件 cctype.h 第 155 行定义.

参考 YSLib::char.

template<class _tCon >

_tCon&& ystdex::trail | ( | _tCon && | con,
|  | const typename decay_t< _tCon >::value_type & | value = `{}`
| ) |  |

保证非空容器以参数指定的元素结尾。

自从
  build 567

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

template<class _tCon , typename... _tParams>

_tCon&& ystdex::trail | ( | _tCon && | con,
|  | _tParams &&... | args
| ) |  |

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

参考 CHRLib::args , 以及 yforward.

template<class _tString >

_tString&& ystdex::trim | ( | _tString && | str,
|  | typename string_traits< _tString >::value_type | c
| ) |  |

inline

删除字符串中指定的连续前缀与后缀字符。

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

参考 ltrim(), rtrim(), YSLib::Text::str , 以及 yforward.

参考自 NPL::Decompose() , 以及 main().

函数调用图:

这是这个函数的调用关系图:
template<class _tString >

_tString&& ystdex::trim | ( | _tString && | str,
|  | const _tString & | t
| ) |  |

inline

自从
  build 659

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

参考 ltrim(), rtrim(), YSLib::Text::str , 以及 yforward.

函数调用图:
template<class _tString >

_tString&& ystdex::trim | ( | _tString && | str,
|  | typename string_traits< _tString >::const_pointer | t = `&to_array<typename string_traits<_tString>::value_type>(" \f\n\r\t\v")[0]`
| ) |  |

inline

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

自从
  build 600

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

参考 ltrim(), rtrim(), YSLib::Text::str, yconstraint , 以及 yforward.

函数调用图:
template<class _tAssocCon , typename _tKey , typename... _tParams>

std::pair<typename _tAssocCon::iterator, bool> ystdex::try_emplace | ( | _tAssocCon & | con,
|  | _tKey && | k,
|  | _tParams &&... | args
| ) |  |

注解
  使用 ADL emplace_hint_in_place 。

参见
  emplace_hint_in_place
  WG21 N4279 。

自从
  build 680

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

参考 CHRLib::args, emplace_hint_in_place(), YSLib::i, search_map() , 以及 yforward.

参考自 YSLib::ValueNode::Place() , 以及 YSLib::ValueNode::try_emplace().

函数调用图:

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

std::pair<typename _tAssocCon::iterator, bool> ystdex::try_emplace_hint | ( | _tAssocCon & | con,
|  | typename _tAssocCon::const_iterator | hint,
|  | _tKey && | k,
|  | _tParams &&... | args
| ) |  |

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

参考 CHRLib::args, emplace_hint_in_place(), YSLib::i, search_map() , 以及 yforward.

参考自 YSLib::ValueNode::try_emplace().

函数调用图:

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

static const auto ystdex::tuple_not_found | ( | size_t(-1) |  | ) |

static

表示没有找到的索引。

自从
  build 651

参见
  WG21 P0088R0 。

template<typename _type >

const type_info& ystdex::type_id | ( |  | ) |

参见
  type_info

在文件 typeinfo.h 第 149 行定义.

template<typename _tFwd , typename... _tParams>

void ystdex::uninitialized_construct | ( | _tFwd | first,
|  | _tFwd | last,
|  | _tParams &&... | args
| ) |  |

在迭代器指定的未初始化的范围上构造对象。

模板参数

  _tFwd | 输出范围前向迭代器类型。
  _tParams | 用于构造对象的参数包类型。

参数

  first | 输出范围起始迭代器。
  args | 用于构造对象的参数包。

注解
  参数被传递的次数和构造的对象数相同。
  接口不保证失败时的析构顺序。

参数

  last | 输出范围终止迭代器。

注解
  和 std::unitialized_fill 类似，但允许指定多个初始化参数。

参见
  WG21 N4431 20.7.12.3[uninitialized.fill] 。

在文件 memory.hpp 第 273 行定义.

参考 CHRLib::args, construct(), destruct_range(), YSLib::i , 以及 yforward.

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

void ystdex::uninitialized_construct_n | ( | _tFwd | first,
|  | _tSize | n,
|  | _tParams &&... | args
| ) |  |

模板参数

  _tSize | 范围大小类型。

参数

  n | 范围大小。

注解
  和 std::unitialized_fill_n 类似，但允许指定多个初始化参数。

参见
  WG21 N4431 20.7.12.4[uninitialized.fill.n] 。

在文件 memory.hpp 第 298 行定义.

参考 CHRLib::args, construct(), destruct_range(), YSLib::i , 以及 yforward.

函数调用图:
template<bool _bNoThrow = true, typename _type >

guard<one_shot<_type> > ystdex::unique_guard | ( | _type | f | ) |

自从
  build 686

在文件 scope_guard.hpp 第 92 行定义.

参考 YSLib::IO::f.

参考自 YSLib::Application::AddExitGuard() , 以及 NPL::A1::SetupTraceDepth().

这是这个函数的调用关系图:
template<size_t _vWidth, typename _tOut >

void ystdex::unpack_uint | ( | typename ystdex::make_width_int< _vWidth >::unsigned_type | value,
|  | _tOut | result
| ) |  |

分解无符号整数到迭代器对指定的字节范围。

前置条件
  断言：范围中的迭代器可解引用。

自从
  build 604

在文件 cstdint.hpp 第 279 行定义.

参考 is_undereferenceable(), platform::n , 以及 yconstraint.

函数调用图:
template<typename _type >

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

inline

解除引用包装。

注解
  默认仅提供对 std::reference_wrapper 和 lref 的实例类型的重载。
  使用 ADL 。

自从
  build 348

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

参考 YSLib::Drawing::x.

template<typename _type >

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

inline

自从
  build 554

在文件 ref.hpp 第 209 行定义.

参考 YSLib::Drawing::GBinaryGroup< _type >::get() , 以及 YSLib::Drawing::x.

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

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

inline

无序调用。

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

参考 YSLib::IO::f, yforward , 以及 yunseq.

参考自 YSLib::UI::AddWidgets(), YSLib::UI::AddWidgetsZ(), YReader::ShlTextReader::BaseSession::BaseSession(), YSLib::UI::Widget::InvalidateWidgets(), YReader::TextInfoBox::Refresh(), YSLib::UI::RemoveWidgets() , 以及 platform::FAT::EntryData::WriteDateTime().

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

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

inline

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

返回
  第一个参数的引用。

自从
  build 594

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

参考 yforward.

template<typename _tOther , typename _type >

auto ystdex::value_or | ( | _type | p,
|  | _tOther && | other = `{}`
| ) |  | -> decltype(p ? *p : other)

inline

取非空值或默认值。

在文件 deref_op.hpp 第 82 行定义.

template<typename _tOther , typename _type , typename _tSentinal = nullptr_t>

auto ystdex::value_or | ( | _type | p,
|  | _tOther && | other,
|  | _tSentinal | last
| ) |  | -> decltype(!bool(p == last) ? *p : other)

inline

在文件 deref_op.hpp 第 88 行定义.

参考 platform::bool , 以及 CHRLib::CharSet::other.

template<size_t _vN, typename... _tParams>

auto ystdex::varg | ( | _tParams &&... | args | ) | -> decltype(variadic_param<_vN>::get(std::forward<decltype( args )>( args )...))

inline

取指定位置的变长参数。

模板参数

  _vN | 表示参数位置的非负数，从左开始计数，第一个参数为 0 。

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

参考 ystdex::variadic_param< _vN >::get() , 以及 yforward.

函数调用图:
template<class _tVector , typename _tIn >

void ystdex::vector_concat | ( | _tVector & | vec,
|  | _tIn | first,
|  | _tIn | last
| ) |  |

插入元素到 `vector` 末尾。

注解
  使用 ADL `size` 。

自从
  build 546

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

参考 concat(), ystdex::any_ops::distance , 以及 size().

函数调用图:
template<class _tVector , typename _tRange >

void ystdex::vector_concat | ( | _tVector & | vec,
|  | _tRange && | c
| ) |  |

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

参考 CHRLib::c, concat(), range_size(), size() , 以及 yforward.

函数调用图:

size_t ystdex::vfmtlen | ( | const char * | fmt,
|  | std::va_list | args
| ) |  |

计算指定格式字符串输出的占用的字节数。

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

返回
  成功为字节数，否则为 size_t(-1) 。

注解
  分别使用 std::vsnprintf 和 std::vswprintf 实现。

自从
  build 564

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

参考 CHRLib::args, platform::size_t , 以及 yconstraint.

参考自 vsfmt().

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

size_t ystdex::vfmtlen | ( | const wchar_t * | fmt,
|  | std::va_list | args
| ) |  |

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

参考 CHRLib::args, platform::size_t , 以及 yconstraint.

template<typename _tChar , class _tString = std::basic_string<_tChar>>

_tString ystdex::vsfmt | ( | const _tChar * | fmt,
|  | std::va_list | args
| ) |  |

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

前置条件
  间接断言：第一参数非空。

自从
  build 640

Bug:
  `char` 以外的模板参数非正确实现。

异常

  std::runtime_error | 格式化字符串输出失败。

注解
  对 _tString 构造异常中立。

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

参考 YSLib::Text::str, vfmtlen() , 以及 yassume.

参考自 platform::LogWithSource() , 以及 sfmt().

函数调用图:

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

std::basic_ostream<_tChar, typename _tString::traits_type>& ystdex::write | ( | std::basic_ostream< _tChar, typename _tString::traits_type > & | os,
|  | const _tString & | str,
|  | typename _tString::size_type | pos = `0`,
|  | typename _tString::size_type | n = `_tString::npos`
| ) |  |

非格式输出。

自从
  build 599

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

参考 min() , 以及 platform::n.

参考自 NPL::PrintIndent() , 以及 NPL::SXML::PrintSyntaxNode().

函数调用图:

这是这个函数的调用关系图:
template<typename _tChar , class _tTraits , size_t _vN>

std::basic_ostream<_tChar, _tTraits>& ystdex::write | ( | std::basic_ostream< _tChar, _tTraits > & | os,
|  | const _tChar(&) | s[_vN]
| ) |  |

自从
  build 619

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

参考 CHRLib::s , 以及 size().

函数调用图:
template<typename _tChar , class _tTraits , size_t _vN>

std::basic_ostream<_tChar, _tTraits>& ystdex::write_literal | ( | std::basic_ostream< _tChar, _tTraits > & | os,
|  | const _tChar(&) | s[_vN]
| ) |  |

注解
  参数数组作为字符串字面量。

自从
  build 619

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

参考 CHRLib::s , 以及 size().

参考自 YSLib::SaveConfiguration().

函数调用图:

这是这个函数的调用关系图:
template<size_t _vWidth>

void ystdex::write_uint_be | ( | byte * | buf,
|  | typename make_width_int< _vWidth >::unsigned_type | val
| ) |  |

inline

向字节缓冲区写入指定宽的大端序无符号整数。

自从
  build 623

在文件 cstdint.hpp 第 329 行定义.

参考 YSLib::Text::buf , 以及 yconstraint.

template<size_t _vWidth>

void ystdex::write_uint_le | ( | byte * | buf,
|  | typename make_width_int< _vWidth >::unsigned_type | val
| ) |  |

inline

向字节缓冲区写入指定宽的小端序无符号整数。

在文件 cstdint.hpp 第 339 行定义.

参考 make_reverse_iterator() , 以及 yconstraint.

参考自 platform::FAT::EntryData::WriteCDateTime(), platform::FAT::EntryData::WriteCluster() , 以及 platform::FAT::EntryData::WriteDateTime().

函数调用图:

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

void ystdex::yassert | ( | const char * | expr_str,
|  | const char * | file,
|  | int | line,
|  | const char * | msg
| ) |  |

YBase 默认断言函数。

注解
  当定义宏 YB_Use_YAssert 不等于 0 时，宏 YAssert 操作由此函数实现。
  参数依次为：表达式、文件名、行号和消息文本。
  允许空指针参数，视为未知。
  调用 std::terminate 终止程序。

自从
  build 642

在文件 cassert.cpp 第 36 行定义.

参考 YSLib::char, CHRLib::s, platform::terminate() , 以及 ynothrow.

函数调用图:

void ystdex::ytrace | ( | std::FILE * | ,
|  | std::uint8_t | ,
|  | std::uint8_t | ,
|  | const char * | ,
|  | int | ,
|  | const char * | ,
|  |  | ...
| ) |  |

YCLib 调试跟踪函数。

注解
  当定义宏 YB_Use_YTrace 不等于 0 时，宏 YTrace 操作由此函数实现。

自从
  build 553

参考自 platform::LogWithSource().

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

## 变量说明

const first_tag ystdex::get_first {}

操纵子。

自从
  build 288

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

const struct ystdex::get_get_t ystdex::get_get

参考自 YSLib::UI::MUIContainer::begin().

const struct ystdex::get_indirect_t ystdex::get_indirect

const first_tag ystdex::get_key {}

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

参考自 YSLib::FetchFontFamilyNames(), YSLib::UI::FetchVisualStyleNames(), YSLib::UI::LocateForTrace() , 以及 YReader::ShlTextReader::SettingSession::SettingSession().

const second_tag ystdex::get_second {}

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

const second_tag ystdex::get_value {}

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

参考自 YSLib::UI::MUIContainer::begin(), YSLib::UI::MUIContainer::PaintVisibleChildren() , 以及 YSLib::GUIHost::~GUIHost().

const struct ystdex::in_place_t ystdex::in_place

参考自 make_optional_inplace().

const struct ystdex::nullopt_t ystdex::nullopt

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