YSTest: ystdex 命名空间参考

YSTest PreAlpha_b800_20170810 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
| 操作检测命名空间。
| fseq
| 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_membuf
| 内存中储存不具有所有权的只读流缓冲。 更多...
class | basic_string_view
class | basic_tstring_view
| 指定结束字符的只读字符串视图。 更多...
class | basic_tstring_view< _tChar, _tTraits, 0 >
class | bitseg_iterator
| 位段迭代器。 更多...
struct | bitseg_traits
| 位段特征。 更多...
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... > >
struct | class_allocator
| 类分配器。 更多...
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 | common_int_type
| 公共整数类型。 更多...
struct | common_int_type< _type1, _type2, _types... >
struct | composed
| 复合函数。 更多...
struct | composed_n
| 多元分发的复合函数。 更多...
class | container_adaptor
| 容器适配器。 更多...
class | container_inserter
| 容器插入函数对象。 更多...
struct | decay_unwrap
class | default_init_allocator
| 默认初始化构造分配器。 更多...
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
| 间接操作：返回派生类自身引用。 更多...
class | derived_entity
| 派生类实体。 更多...
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 | generalized_composed
| 多元复合函数。 更多...
struct | get_get_t
struct | get_indirect_t
struct | guard
| 作用域守护：析构时调用保存的函数对象或引用。 更多...
struct | has_equality_operator
| 判断是否存在合式的结果可转换为 bool 类型的 == 操作符接受指定类型的表达式。 更多...
struct | has_mem_apply
| 判断 _type 是否包含可以指定参数应用得到类型的成员 apply 模板。 更多...
struct | has_mem_delete
struct | has_mem_is_transparent
| 判断 _type 是否包含 is_transparent 成员类型。 更多...
struct | has_mem_new
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_tag
| 原地标记类型。 更多...
struct | indirect
| 一元 * 操作。 更多...
struct | indirect< void >
class | indirect_input_iterator
| 间接输入迭代器。 更多...
class | indirect_ref_adaptor
| 包装间接操作的引用适配器。 更多...
struct | integer_width
| 取指定整数类型的位宽度。 更多...
class | invalid_construction
| 使用不满足构造限制检查导致的异常。 更多...
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_sharing
| 判断指定类型是否为已知的持有共享所有权的对象类型。 更多...
struct | is_sharing< std::shared_ptr< _type > >
struct | is_sharing< std::weak_ptr< _type > >
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_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 | max_
struct | max_< _v1 >
struct | max_< _v1, _v2, _vn... >
struct | mem_get
| 成员 get 操作。 更多...
struct | mem_get< void >
struct | min_
| 算术操作元函数。 更多...
struct | min_< _v1 >
struct | min_< _v1, _v2, _vn... >
class | mixin
| 混入对象。 更多...
struct | modular_arithmetic
| 模算术特性：取得不超过模值的最大值。 更多...
struct | modular_arithmetic< fixed_point< _tBase, _vInt, _vFrac > >
| modular_arithmetic 的 fixed_point 特化类型。 更多...
struct | n_tag
| 自然数标记。 更多...
struct | n_tag< 0 >
class | narrowing_error
| 异常：无法表示数值范围的转换。 更多...
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 | ordered_bitseg_traits
| 按索引有序映射的特征适配模板。 更多...
struct | parameter_of
| 取指定索引的参数类型。 更多...
struct | paramlist_size
| 取参数列表大小。 更多...
class | path
| 一般路径模板。 更多...
class | path_traits
| 路径特征。 更多...
class | path_traits< std::basic_string< _tChar, _tAlloc > >
| 文件字符串路径特征。 更多...
struct | placement_delete
| 放置存储的对象删除器：释放时调用伪析构函数。 更多...
struct | pointer_classify
| 指针包装为类类型迭代器。 更多...
struct | pointer_classify< _type * >
class | pointer_iterator
| 指针迭代器。 更多...
class | prototyped_iterator
| 原型迭代器：共享对象引用，在解引用时进行指定的更新操作的随机访问迭代器。 更多...
class | pseudo_iterator
| 伪迭代器。 更多...
struct | pseudo_output
| 伪输出对象。 更多...
class | pun_ref
| 避免严格别名分析限制的缓冲引用。 更多...
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
| 成员下标迭代器。 更多...
struct | tagged_value
| 带记号标记的可选值。 更多...
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 | value_init_t
| 值初始化标记。 更多...
struct | variadic_param
| 变长参数操作模板。 更多...
struct | variadic_param< 0U >
class | void_ref
| 任意对象引用类型。 更多...
class | void_ref_any
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_n< 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<typename _type >
using | tidy_ptr = nptr< observer_ptr< _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 >
| 使用 ystdex::vswap 调用暂存对象的作用域守护。 更多...
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 >>
| 取成员指针类型指向的类类型。 更多...
template<typename _type , typename... _types>
using | common_nonvoid_t = cond_or_t< is_void< _type >, _type, common_type_t, _types... >
| 取公共非空类型：若第一参数为非空类型则为第一参数，否则从其余参数推断。 更多...
template<typename... _types>
using | common_underlying_t = common_type_t< underlying_cond_type_t< _types >... >
| 取公共底层类型。 更多...
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 = bool_< _b >
| bool 常量。 更多...
template<typename _type >
using | indirect_element_t = remove_reference_t< indirect_t< _type >>
template<typename _type >
using | classify_value_t = cond_t< std::is_class< _type >, _type, boxed_value< _type >>
| 包装非类类型为类类型。 更多...
using | input_monomorphic_iterator = any_input_iterator< void_ref, ptrdiff_t, void *, void_ref_any >
template<typename _tDst , typename _tSrc >
using | is_narrowing_from_floating_to_integer = and_< is_integral< _tDst >, is_floating_point< _tSrc >>
template<typename _tDst , typename _tSrc >
using | is_narrowing_from_floating_to_floating = and_< is_floating_point< _tDst >, is_floating_point< _tSrc >, is_same< common_type_t< _tDst, _tSrc >, _tSrc >>
template<typename _tDst , typename _tSrc >
using | is_narrowing_from_floating = or_< is_narrowing_from_floating_to_integer< _tDst, _tSrc >, is_narrowing_from_floating_to_floating< _tDst, _tSrc >>
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_or< not_< is_void< remove_pointer_t< _tPointer >>>, _tDefault, indirect_element_t, _tPointer >
| 取指针对应的元素类型。 更多...
template<typename... _types>
using | wrap_mixin_t = mixin< classify_value_t< _types >... >
| 包装为混入类。 更多...
template<typename _type , typename _tPointer = _type*>
using | placement_ptr = std::unique_ptr< _type, placement_delete< _type, _tPointer >>
| 独占放置存储的对象所有权的指针。 更多...
template<typename _type >
using | unwrap_reference_t = _t< unwrap_reference< _type >>
template<typename _type >
using | decay_unwrap_t = _t< decay_unwrap< _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 ）。 更多...
using | membuf = basic_membuf< char >
using | wmembuf = basic_membuf< wchar_t >
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<class _tCond , typename _tDefault , template< typename... > class _gOp, typename... _tParams>
using | cond_or = cond_t< _tCond, vdefer< _gOp, _tParams... >, _tDefault >
| 条件判断，若失败使用默认类型。 更多...
template<class _tCond , typename _tDefault , template< typename... > class _gOp, typename... _tParams>
using | cond_or_t = _t< cond_or< _tCond, identity< _tDefault >, _gOp, _tParams... >>
template<bool _vInt>
using | bool_ = std::integral_constant< bool, _vInt >
template<char _vInt>
using | char_ = std::integral_constant< char, _vInt >
template<int _vInt>
using | int_ = std::integral_constant< int, _vInt >
template<long long _vInt>
using | llong_ = std::integral_constant< long long, _vInt >
template<long _vInt>
using | long_ = std::integral_constant< long, _vInt >
template<short _vInt>
using | short_ = std::integral_constant< short, _vInt >
template<unsigned long long _vInt>
using | ullong_ = std::integral_constant< unsigned long long, _vInt >
template<unsigned long _vInt>
using | ulong_ = std::integral_constant< unsigned long, _vInt >
template<unsigned _vInt>
using | uint_ = std::integral_constant< unsigned, _vInt >
template<unsigned short _vInt>
using | ushort_ = std::integral_constant< unsigned short, _vInt >
template<size_t _vInt>
using | size_t_ = std::integral_constant< size_t, _vInt >
template<ptrdiff_t _vInt>
using | ptrdiff_t_ = std::integral_constant< ptrdiff_t, _vInt >
using | true_ = bool_< true >
using | false_ = bool_< false >
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<class... _b>
using | conjunction = and_< _b... >
template<class... _b>
using | disjunction = or_< _b... >
template<class _b >
using | negation = not_< _b >
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_, typename _tElse = false_>
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 | id_t = _type
template<typename _type >
using | add_ptr_t = _type *
template<typename _type >
using | add_ref_t = _type &
template<typename _type >
using | add_rref_t = _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)
| 多态类指针类型转换。 更多...
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))))
| 替换关联容器的值。 更多...
template<class _tAssocCon , typename _tKey , typename... _tParams>
auto | emplace_hint_in_place (_tAssocCon &con, typename _tAssocCon::const_iterator hint, _tKey &&k, _tParams &&...args) -> typename _tAssocCon::iterator
| 带有提示的原地插入构造。 更多...
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 _type , typename = enable_if_convertible_t<_type&, typename _tAssocCon::value_type&>>
const auto | extract_mapped (_type &val) -> decltype(details::assoc_con_traits< _tAssocCon >::extract_mapped(is_detected< details::mapped_type_t, _tAssocCon >(), val))
| 从关联容器的值取映射的值。 更多...
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 _tAlloc >
std::unique_ptr< _tAlloc, allocator_delete< _tAlloc > > | make_allocator_guard (_tAlloc &a, typename std::allocator_traits< _tAlloc >::size_type n=1)
| 构造分配器守护。 更多...
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 | owns_any (_type *const &p)
template<typename _type , typename _fDeleter >
bool | owns_any (const std::unique_ptr< _type, _fDeleter > &p)
template<typename _type >
bool | owns_any (const std::shared_ptr< _type > &p)
template<typename _type >
bool | owns_any (const std::weak_ptr< _type > &p)
template<typename _type >
bool | owns_nonnull (_type *const &p)
template<typename _type , typename _fDeleter >
bool | owns_nonnull (const std::unique_ptr< _type, _fDeleter > &p)
template<typename _type >
bool | owns_nonnull (const std::shared_ptr< _type > &p)
template<typename _type >
bool | owns_nonnull (const std::weak_ptr< _type > &p)
template<typename _type >
bool | owns_unique (const _type &)
template<typename _type , class _tDeleter >
bool | owns_unique (const std::unique_ptr< _type, _tDeleter > &p)
template<typename _type >
bool | owns_unique (const std::shared_ptr< _type > &p)
template<typename _type >
bool | owns_unique (const std::weak_ptr< _type > &p)
template<typename _type >
bool | owns_unique_nonnull (const _type &)
template<typename _type , class _tDeleter >
bool | reset (std::unique_ptr< _type, _tDeleter > &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 >
void | construct_default_in (_type &obj)
| 以默认初始化原地构造。 更多...
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 _tFwd >
void | uninitialized_value_construct (_tFwd first, _tFwd last)
template<typename _tFwd , typename _tSize >
_tFwd | uninitialized_value_construct_n (_tFwd first, _tSize n)
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 _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={})
| 选择性过滤前缀。 更多...
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 , typename _type2 = _type>
_type & | copy_and_swap (_type &obj, const _type2 &new_val)
| 复制后交换。 更多...
template<typename _type , typename _type2 = _type>
_type | copy_or_move (bool copy, _type &obj)
| 按参数复制或转移。 更多...
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)...))&
| 取非类型标识和初始化调用指定的对象。 更多...
char * | strcatdup (const char *s1, const char *s2, void *(*fun)(size_t))
void | throw_invalid_construction ()
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 _tDst , typename _tSrc >
_tDst | narrow_cast (_tSrc v)
| 可能缩小数值范围的显式转换。 更多...
template<typename _tDst , typename _tSrc >
_tDst | narrow (_tSrc v)
template<typename _tDst , typename _tSrc >
_tDst | not_widen_cast (_tSrc v)
| 可能缩小数值范围或数值范围最大和最小值保持不变的转换。 更多...
template<typename _tDst , typename _tSrc >
_tDst | not_widen (_tSrc v)
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 实现。 更多...
bool | isdigit (char c)
| 区域无关的 std::isdigit 实现。 更多...
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 >
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_by (_func f, const _tAssocCon &con, _tParams &&...args)
| 按指定键值搜索指定映射并执行操作。 更多...
template<typename _func , class _tAssocCon , typename... _tParams>
std::pair< typename _tAssocCon::iterator, bool > | search_map_by (_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 | is_date_range_valid (const std::tm &t)
| 判断 std::tm 的日期数据成员范围是否有效。 更多...
bool | is_time_no_leap_valid (const std::tm &t)
| 判断 std::tm 的时间数据成员范围是否有效。 更多...
bool | iswprint (wchar_t)
| 区域无关的 std::isprint 实现。 更多...
bool | iswspace (wchar_t)
| 区域无关的 std::iswspace 实现。 更多...
bool | iswgraph (wchar_t wc)
| 区域无关的 std::iswgraph 实现。 更多...
template<typename _type >
auto | nonnull_or (_type &&p) -> decay_t< decltype(std::forward< decltype(p)>(p))>
| 取非空引用或默认值。 更多...
template<typename _tOther , typename _type >
auto | nonnull_or (_type &&p, _tOther &&other) -> decltype(p?std::forward< decltype(p)>(p):std::forward< decltype(other)>(other))
template<typename _tOther , typename _type , typename _tSentinal = nullptr_t>
auto | nonnull_or (_type &&p, _tOther &&other, _tSentinal &&last) -> decltype(!bool(p==std::forward< decltype(last)>(last))?std::forward< decltype(p)>(p):std::forward< decltype(other)>(other))
template<typename _type , typename _func >
auto | call_nonnull_or (_func f, _type &&p) -> decay_t< decltype(f(std::forward< decltype(p)>(p)))>
| 调用非引用或默认值。 更多...
template<typename _tOther , typename _type , typename _func >
auto | call_nonnull_or (_func f, _type &&p, _tOther &&other) -> decltype(p?f(std::forward< decltype(p)>(p)):std::forward< decltype(other)>(other))
template<typename _tOther , typename _type , typename _func , typename _tSentinal = nullptr_t>
auto | call_nonnull_or (_func f, _type &&p, _tOther &&other, _tSentinal &&last) -> decltype(!bool(p==std::forward< decltype(last)>(last))?f(std::forward< decltype(p)>(p)):std::forward< decltype(other)>(other))
template<typename _type >
auto | value_or (_type &&p) -> decay_t< decltype(*std::forward< decltype(p)>(p))>
| 取非空值或默认值。 更多...
template<typename _tOther , typename _type >
auto | value_or (_type &&p, _tOther &&other) -> decltype(p?*std::forward< decltype(p)>(p):std::forward< decltype(other)>(other))
template<typename _tOther , typename _type , typename _tSentinal = nullptr_t>
auto | value_or (_type &&p, _tOther &&other, _tSentinal &&last) -> decltype(!bool(p==std::forward< decltype(last)>(last))?*std::forward< decltype(p)>(p):std::forward< decltype(other)>(other))
template<typename _type , typename _func >
auto | call_value_or (_func f, _type &&p) -> decay_t< decltype(f(*std::forward< decltype(p)>(p)))>
| 调用非空值或取默认值。 更多...
template<typename _tOther , typename _type , typename _func >
auto | call_value_or (_func f, _type &&p, _tOther &&other) -> decltype(p?f(*std::forward< decltype(p)>(p)):std::forward< decltype(other)>(other))
template<typename _tOther , typename _type , typename _func , typename _tSentinal = nullptr_t>
auto | call_value_or (_func f, _type &&p, _tOther &&other, _tSentinal &&last) -> decltype(!bool(p==std::forward< decltype(last)>(last))?f(*std::forward< decltype(p)>(p)):std::forward< decltype(other)>(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 _type , typename _func >
auto | invoke_value_or (_func f, _type &&p) -> decay_t< decltype(ystdex::invoke(f,*std::forward< decltype(p)>(p)))>
| 使用 invoke 调用非空值或取默认值。 更多...
template<typename _tOther , typename _type , typename _func >
auto | invoke_value_or (_func f, _type &&p, _tOther &&other) -> decltype(p?ystdex::invoke(f,*std::forward< decltype(p)>(p)):std::forward< decltype(other)>(other))
template<typename _tOther , typename _type , typename _func , typename _tSentinal = nullptr_t>
auto | invoke_value_or (_func f, _type &&p, _tOther &&other, _tSentinal &&last) -> decltype(!bool(p==std::forward< decltype(last)>(last))?ystdex::invoke(f,*std::forward< decltype(p)>(p)):std::forward< decltype(other)>(other))
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 _func , typename _func2 >
composed< _func, _func2 > | compose (_func f, _func2 g)
| 函数复合。 更多...
template<typename _func , typename _func2 , typename _func3 , typename... _funcs>
auto | compose (_func f, _func2 g, _func3 h, _funcs...args) -> decltype(ystdex::compose(ystdex::compose(f, g), h, args...))
template<typename _func , typename _func2 >
composed_n< _func, _func2 > | compose_n (_func f, _func2 g)
| 单一分派的多元函数复合。 更多...
template<typename _func , typename _func2 , typename _func3 , typename... _funcs>
auto | compose_n (_func f, _func2 g, _func3 h, _funcs...args) -> decltype(ystdex::compose_n(ystdex::compose_n(f, g), h, 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 _type , typename... _tParams>
_type * | try_new (_tParams &&...args)
| 尝试调用 new 表达式创建对象。 更多...
template<typename _type , class _tAlloc , typename... _tParams>
_type * | try_create_with_allocator (_tAlloc &&a, _tParams &&...args)
| 尝试调用 ystdex::create_with_allocator 表达式创建对象。 更多...
template<typename _type , class _tDeleter >
bool | owns_unique_nonnull (const std::unique_ptr< _type, _tDeleter > &p)
template<typename _type >
bool | owns_unique_nonnull (const std::shared_ptr< _type > &p)
template<typename _type >
bool | owns_unique_nonnull (const std::weak_ptr< _type > &p)
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 _type , typename _tValue >
std::shared_ptr< _type > | make_shared (std::initializer_list< _tValue > il)
| 使用指定类型的初始化列表构造指定类型的 std::shared_ptr 对象。 更多...
template<typename _type >
std::weak_ptr< _type > | make_weak (const std::shared_ptr< _type > &p)
| 使用指定的 std::shared_ptr 实例的对象创建对应的 std::weak_ptr 实例的对象。 更多...
template<typename _tValue , typename _type = _tValue>
std::shared_ptr< decay_t< _type > > | share_copy (const _tValue &v)
| 复制值创建对应的 std::shared_ptr 实例的对象。 更多...
template<typename _tValue , typename _type = _tValue>
std::shared_ptr< decay_t< _type > > | share_forward (_tValue &&v)
| 传递值创建对应的 std::shared_ptr 实例的对象。 更多...
template<typename _tValue , typename _type = _tValue>
std::shared_ptr< decay_t< _type > > | share_move (_tValue &&v)
| 转移值创建对应的 std::shared_ptr 实例的对象。 更多...
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 _type >
_type * | clone_monomorphic (const _type &v)
| 使用 new 复制对象。 更多...
template<typename _type , class _tAlloc >
auto | clone_monomorphic (const _type &v, _tAlloc &&a) -> decltype(ystdex::create_with_allocator< _type >(std::forward< decltype(a)>(a), v))
| 使用分配器复制对象。 更多...
template<typename _tPointer >
auto | clone_monomorphic_ptr (const _tPointer &p) -> decltype(ystdex::clone_monomorphic(*p))
| 若指针非空，使用 new 复制指针指向的对象。 更多...
template<typename _tPointer , class _tAlloc >
auto | clone_monomorphic_ptr (const _tPointer &p, _tAlloc &&a) -> decltype(ystdex::clone_monomorphic(*p, std::forward< decltype(a)>(a)))
| 若指针非空，使用分配器复制指针指向的对象。 更多...
template<class _type >
auto | clone_polymorphic (const _type &v) -> decltype(v.clone())
| 使用 `clone` 成员函数复制多态类类型对象。 更多...
template<class _tPointer >
auto | clone_polymorphic_ptr (const _tPointer &p) -> decltype(clone_polymorphic(*p))
| 若指针非空，使用 `clone` 成员函数复制指针指向的多态类类型对象。 更多...
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 , typename... _tParams>
optional< _type > | make_optional (_tParams &&...args)
| 创建 optional 对象。 更多...
template<typename _type , typename _tOther , typename... _tParams>
optional< _type > | make_optional (std::initializer_list< _tOther > il, _tParams &&...args)
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<typename _type , typename _tObj >
_type * | construct_default_within (_tObj &obj)
| 以默认初始化在对象中构造。 更多...
template<typename _type , typename _tObj , typename... _tParams>
_type * | construct_within (_tObj &obj, _tParams &&...args)
| 以值初始化在对象中构造。 更多...
template<typename _tIter , typename... _tParams>
void | construct (_tIter i, _tParams &&...args)
| 使用指定参数在迭代器指定的位置以指定参数初始化构造对象。 更多...
template<typename _tIter >
void | construct_default (_tIter i)
| 使用指定参数在迭代器指定的位置以默认初始化构造对象。 更多...
template<typename _tIter , typename... _tParams>
void | construct_range (_tIter first, _tIter last, _tParams &&...args)
| 使用指定的参数重复构造迭代器范围内的对象序列。 更多...
template<typename _type >
void | destroy_at (_type *location)
| 原地销毁。 更多...
template<typename _tFwd >
void | destroy (_tFwd first, _tFwd last)
template<typename _tFwd , typename _tSize >
_tFwd | destroy_n (_tFwd first, _tSize n)
template<typename _tFwd >
void | uninitialized_default_construct (_tFwd first, _tFwd last)
| 在范围内未初始化放置构造。 更多...
template<typename _tFwd , typename _tSize >
_tFwd | uninitialized_default_construct_n (_tFwd first, _tSize n)
template<typename _tIn , class _tFwd >
_tFwd | uninitialized_move (_tIn first, _tIn last, _tFwd result)
| 转移初始化范围。 更多...
template<typename _tIn , typename _tSize , class _tFwd >
std::pair< _tIn, _tFwd > | uninitialized_move_n (_tIn first, _tSize n, _tFwd result)
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 _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<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<class _type >
auto | dismiss (_type &gd) -> decltype(gd.dismiss())
| 解除操作。 更多...
template<typename _func , typename _tRes , typename _tState >
void | dismiss (const one_shot< _func, _tRes, _tState > &gd)
template<typename _func , bool _bNoThrow>
auto | dismiss (guard< _func, _bNoThrow > &gd) -> decltype(dismiss(gd.func))
| 使用 ADL `dismiss` 。 更多...
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)
template<typename _type , class _tTuple >
_type | make_from_tuple (_tTuple &&t)
| 从元组构造指定类型的值。 更多...
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 ()
template<typename _type >
enable_if_t< is_nothrow_constructible< _type, volatile _type && >)&&is_nothrow_assignable< _type &, volatile _type && >)&&is_nothrow_assignable< volatile _type &, _type && >)> | swap_volatile (_type &x, volatile _type &y)
| 交换非 volatile 左值和 volatile 左值。 更多...
template<typename _type >
auto | swap_volatile (volatile _type &x, _type &y) -> decltype(ystdex::swap_volatile(y, x))
template<typename _type , size_t _vN>
void | swap_volatile (_type(&x)[_vN], add_volatile_t< _type[_vN]> &y)
template<typename _type , typename _type2 , typename = enable_if_t<!details::swap_volatile_avail<_type, _type2>::value>>
void | vswap (_type &&x, _type2 &&y)
| 交换可能是 volatile 的左值或右值。 更多...
template<typename _type , typename _type2 >
auto | vswap (_type &&x, _type2 &&y) -> enable_if_t< details::swap_volatile_avail< _type, _type2 >::value >

## 变量

const struct ystdex::default_init_t | default_init
const struct ystdex::value_init_t | value_init
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
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 | local_allocator = cond_t< and_< has_mem_new< _type, size_t >, has_mem_delete< _type * >>, class_allocator< _type >, std::allocator< _type >>
| 局部分配器。 更多...
template<typename _type , class _tAlloc , typename... _tParams>
auto | create_with_allocator (_tAlloc &&a, _tParams &&...args) -> decltype(ystdex::make_allocator_guard(a).release())
| 使用分配器创建对象。 更多...
using | in_place_t = in_place_tag(&)(empty_base<>)
| 原地空标记类型。 更多...
template<typename _type >
using | in_place_type_t = in_place_tag(&)(empty_base< _type >)
| 原地类型标记模板。 更多...
template<size_t _vIdx>
using | in_place_index_t = in_place_tag(&)(size_t_< _vIdx >)
| 原地索引标记模板。 更多...
in_place_tag | in_place (empty_base<>)
| 原地标记函数。 更多...
template<typename _type >
in_place_tag | in_place (empty_base< _type >)
template<size_t _vIdx>
in_place_tag | in_place (size_t_< _vIdx >)
template<typename _type >
using | pun_ptr = placement_ptr< decay_t< _type >>
| 避免严格别名分析限制的缓冲独占所有权指针。 更多...
template<typename _type , typename _tObj , typename... _tParams>
pun_ptr< _type > | make_pun (_tObj &obj, _tParams &&...args)
| 构造避免严格别名分析限制的缓冲独占所有权指针指定的值初始化对象。 更多...
template<typename _type , typename _tObj >
pun_ptr< _type > | make_pun_default (_tObj &obj)
| 构造避免严格别名分析限制的缓冲独占所有权指针指定的默认初始化对象。 更多...

## 详细描述

<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 第 1034 行定义.

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

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

template<bool _b>

using ystdex::bool_constant = typedef bool_<_b>

bool 常量。

参见
  WG21 N4389 。
  WG21 N4527 20.10.3[meta.help] 。

自从
  build 617

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

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 第 834 行定义.

template<typename _type , typename... _types>

using ystdex::common_nonvoid_t = typedef cond_or_t<is_void<_type>, _type, common_type_t, _types...>

取公共非空类型：若第一参数为非空类型则为第一参数，否则从其余参数推断。

自从
  build 562

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

template<typename... _types>

using ystdex::common_underlying_t = typedef common_type_t<underlying_cond_type_t<_types>...>

取公共底层类型。

自从
  build 629

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

template<class... _b>

using ystdex::conjunction = typedef and_<_b...>

参见
  WG21 P0013R1 。
  WG21 N4606 20.15.8[meta.logical] 。

自从
  build 723

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

template<typename _type >

using ystdex::decay_unwrap_t = typedef _t<decay_unwrap<_type>>

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

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

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

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

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

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

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

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

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

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

template<class... _b>

using ystdex::disjunction = typedef or_<_b...>

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

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 第 597 行定义.

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 第 1052 行定义.

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 第 1057 行定义.

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 第 1061 行定义.

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 第 1066 行定义.

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 第 633 行定义.

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

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

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 第 607 行定义.

template<typename _type , size_t _vN = 1>

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

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

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

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 第 603 行定义.

template<typename _type >

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

自从
  build 595

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

template<size_t _vIdx>

using ystdex::in_place_index_t = typedef in_place_tag(&)( size_t_<_vIdx> )

原地索引标记模板。

在文件 placement.hpp 第 77 行定义.

using ystdex::in_place_t = typedef in_place_tag(&)( empty_base<> )

原地空标记类型。

在文件 placement.hpp 第 69 行定义.

template<typename _type >

using ystdex::in_place_type_t = typedef in_place_tag(&)( empty_base<_type> )

原地类型标记模板。

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

template<typename _type >

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

自从
  build 671

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

template<typename _type >

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

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

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

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

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

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

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

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 第 727 行定义.

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 第 723 行定义.

template<typename _type >

using ystdex::local_allocator = typedef cond_t<and_<has_mem_new<_type, size_t>, has_mem_delete<_type*>>, class_allocator<_type>, std::allocator<_type>>

局部分配器。

对支持类作用域分配的类类型为 class_allocator ，否则为 std::allocator 。

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

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 第 61 行定义.

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 第 608 行定义.

template<typename _tRet , class _tTuple >

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

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

template<typename _tInt , size_t _vN>

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

取自然数序列。

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

template<typename _tInt , size_t _vN>

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

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

template<typename _fCallable >

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

自从
  build 447

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

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 第 246 行定义.

template<typename _tInt , _tInt _vBase, class _tSeq >

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

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

template<typename _type >

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

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

自从
  build 612

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

using ystdex::membuf = typedef basic_membuf<char>

在文件 streambuf.hpp 第 82 行定义.

template<class _b >

using ystdex::negation = typedef not_<_b>

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

using ystdex::octet = typedef void

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

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 第 555 行定义.

template<typename _type , typename _tPointer = _type*>

using ystdex::placement_ptr = typedef std::unique_ptr<_type, placement_delete<_type, _tPointer>>

独占放置存储的对象所有权的指针。

在文件 placement.hpp 第 513 行定义.

template<typename _type >

using ystdex::pun_ptr = typedef placement_ptr<decay_t<_type>>

避免严格别名分析限制的缓冲独占所有权指针。

自从
  build 716

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

template<typename _type >

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

自从
  build 448

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

template<typename _fCallable >

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

自从
  build 447

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

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 第 279 行定义.

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>

使用 ystdex::vswap 调用暂存对象的作用域守护。

自从
  build 569

待办事项:

  支持分配器。

  支持有限的复制和转移。

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

template<typename _type >

using ystdex::tidy_ptr = typedef nptr<observer_ptr<_type>>

自从
  build 755

在文件 pointer.hpp 第 336 行定义.

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 第 51 行定义.

template<typename _type >

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

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

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 第 606 行定义.

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 。
  CWG 1558 。

自从
  build 688

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

template<typename... _types>

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

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

参见
  void_t

自从
  build 688

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

using ystdex::wmembuf = typedef basic_membuf<wchar_t>

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

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 第 47 行定义.

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 第 525 行定义.

参考 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 N4606 20.5.2.5[tuple.apply]/1 。
  http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4023.html#tuple.apply 。

自从
  build 547

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

参考 CHRLib::args , 以及 yforward.

template<typename _type >

add_const_t<_type>& ystdex::as_const | ( | _type & | t | ) |

inline

转换 const 引用。

参见
  WG21 N4380 。

自从
  build 593

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

参考自 copy_or_move(), NPL::InvokePasses(), NPL::A1::ReduceCombined(), search_map(), search_map_by() , 以及 YSLib::Text::VerifyEncoding().

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

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

inline

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

自从
  build 274

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

参考 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 第 419 行定义.

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 第 623 行定义.

参考 CHRLib::args , 以及 yforward.

参考自 YReader::ShlTextReader::BaseSession::BaseSession(), bind_forward(), NPL::A1::Forms::CallBinaryFold(), YSLib::UI::MLinearUIContainer::Contains(), YSLib::UI::MLinearUIContainer::operator-=(), NPL::A1::ReduceChildren(), YReader::TextInfoBox::Refresh(), NPL::A1::RegisterSequenceContextTransformer(), NPL::A1::ReplaceSeparatedChildren(), 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 第 631 行定义.

参考 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 第 646 行定义.

参考 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 第 967 行定义.

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

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

auto ystdex::call_nonnull_or | ( | _func | f,
|  | _type && | p
| ) |  | -> decay_t<decltype(f(std::forward<decltype( p )>( p )))>

inline

调用非引用或默认值。

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

参考 CHRLib::f(), CHRLib::p() , 以及 yforward.

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

auto ystdex::call_nonnull_or | ( | _func | f,
|  | _type && | p,
|  | _tOther && | other
| ) |  | -> decltype(p ? f(std::forward<decltype( p )>( p )) : std::forward<decltype( other )>( other ))

inline

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

参考 CHRLib::f(), CHRLib::CharSet::other, CHRLib::p() , 以及 yforward.

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

auto ystdex::call_nonnull_or | ( | _func | f,
|  | _type && | p,
|  | _tOther && | other,
|  | _tSentinal && | last
| ) |  | -> decltype(!bool(p == std::forward<decltype( last )>( last )) ? f(std::forward<decltype( p )>( p )) : std::forward<decltype( other )>( other ))

inline

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

参考 platform::bool, CHRLib::f(), CHRLib::CharSet::other, CHRLib::p() , 以及 yforward.

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

auto ystdex::call_value_or | ( | _func | f,
|  | _type && | p
| ) |  | -> decay_t<decltype(f(*std::forward<decltype( p )>( p )))>

inline

调用非空值或取默认值。

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

参考 CHRLib::f(), CHRLib::p() , 以及 yforward.

参考自 NPL::SXML::ConvertStringNode(), NPL::A1::EvaluateDelayed(), fexists(), get_nested_exception_ptr(), YSLib::Drawing::FontCache::GetTypefacePtr(), YSLib::GetValueOf(), YSLib::GetValuePtrOf(), NPL::InvokePasses(), NPL::A1::ReduceLeafToken(), NPL::ReferenceTerm() , 以及 platform::ufexists().

函数调用图:

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

auto ystdex::call_value_or | ( | _func | f,
|  | _type && | p,
|  | _tOther && | other
| ) |  | -> decltype(p ? f(*std::forward<decltype( p )>( p )) : std::forward<decltype( other )>( other ))

inline

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

参考 CHRLib::f(), CHRLib::CharSet::other, CHRLib::p() , 以及 yforward.

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

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

inline

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

参考 platform::bool, CHRLib::f(), CHRLib::CharSet::other, CHRLib::p() , 以及 yforward.

函数调用图:
template<class _tCon >

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

inline

移除 const_iterator 的 const 限定。

自从
  build 680

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

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

这是这个函数的调用关系图:
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 第 830 行定义.

参考 cast_mutable().

函数调用图:
template<typename _func >

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

inline

顺序链式调用。

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

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

参考 CHRLib::f() , 以及 yforward.

参考自 chain_apply().

函数调用图:

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

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

inline

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

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

函数调用图:
template<typename _type >

_type* ystdex::clone_monomorphic | ( | const _type & | v | ) |

inline

使用 new 复制对象。

自从
  build 746

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

参考自 clone_monomorphic_ptr().

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

auto ystdex::clone_monomorphic | ( | const _type & | v,
|  | _tAlloc && | a
| ) |  | -> decltype(ystdex::create_with_allocator<_type>(std::forward<decltype( a )>( a ), v))

inline

使用分配器复制对象。

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

参考 YSLib::a, v , 以及 yforward.

template<typename _tPointer >

auto ystdex::clone_monomorphic_ptr | ( | const _tPointer & | p | ) | -> decltype(ystdex::clone_monomorphic(*p))

inline

若指针非空，使用 new 复制指针指向的对象。

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

参考 clone_monomorphic() , 以及 CHRLib::p().

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

auto ystdex::clone_monomorphic_ptr | ( | const _tPointer & | p,
|  | _tAlloc && | a
| ) |  | -> decltype(ystdex::clone_monomorphic(*p, std::forward<decltype( a )>( a )))

inline

若指针非空，使用分配器复制指针指向的对象。

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

参考 YSLib::a, clone_monomorphic(), CHRLib::p() , 以及 yforward.

函数调用图:
template<class _type >

auto ystdex::clone_polymorphic | ( | const _type & | v | ) | -> decltype(v.clone())

inline

使用 `clone` 成员函数复制多态类类型对象。

前置条件
  静态断言： `is_polymorphic<decltype(v)>()` 。

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

参考 v.

参考自 clone_polymorphic_ptr().

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

auto ystdex::clone_polymorphic_ptr | ( | const _tPointer & | p | ) | -> decltype(clone_polymorphic(*p))

inline

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

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

参考 clone_polymorphic() , 以及 CHRLib::p().

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

composed<_func, _func2> ystdex::compose | ( | _func | f,
|  | _func2 | g
| ) |  |

inline

函数复合。

注解
  最后一个参数最先被调用，可以为多元函数；其它被复合的函数需要保证有一个参数。

返回
  复合的可调用对象。

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

参考 CHRLib::f().

参考自 NPL::A1::Forms::CallSystem(), compose(), fexists(), YSLib::GetValuePtrOf(), main() , 以及 platform::ufexists().

函数调用图:

这是这个函数的调用关系图:
template<typename _func , typename _func2 , typename _func3 , typename... _funcs>

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

inline

自从
  build 731

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

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

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

composed_n<_func, _func2> ystdex::compose_n | ( | _func | f,
|  | _func2 | g
| ) |  |

inline

单一分派的多元函数复合。

注解
  第一个参数最后被调用，可以为多元函数；其它被复合的函数需要保证有一个参数。

返回
  单一分派的多元复合的可调用对象。

自从
  build 740

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

参考 CHRLib::f().

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

函数调用图:

这是这个函数的调用关系图:
template<typename _func , typename _func2 , typename _func3 , typename... _funcs>

auto ystdex::compose_n | ( | _func | f,
|  | _func2 | g,
|  | _func3 | h,
|  | _funcs... | args
| ) |  | -> decltype(ystdex::compose_n(ystdex::compose_n(f, g), h, args...))

inline

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

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

函数调用图:
template<class _tCon , typename _tIn >

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

插入元素到容器末尾。

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

注解
  使用 ADL end 。

自从
  build 546

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

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

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

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

函数调用图:

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

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

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

参考 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 第 543 行定义.

参考 concat() , 以及 yconstraint.

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

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

选择性过滤前缀。

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

自从
  build 565

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

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().

函数调用图:
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().

函数调用图:
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 第 1056 行定义.

参考 CHRLib::p().

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

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

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

参考 CHRLib::p().

函数调用图:
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_default_within(), construct_within(), 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 模板。

在文件 placement.hpp 第 178 行定义.

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

参考自 ystdex::details::optional_base< _type, true >::assign(), ystdex::default_init_allocator< _type, _tAlloc >::construct(), construct_range(), ystdex::optional< _type >::emplace(), ystdex::optional< _type >::operator=(), ystdex::optional< _type >::swap(), uninitialized_construct(), uninitialized_construct_n(), uninitialized_move(), uninitialized_move_n() , 以及 uninitialized_value_construct_n().

函数调用图:

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

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

使用指定参数在迭代器指定的位置以默认初始化构造对象。

参数

  i | 迭代器。

自从
  build 716

在文件 placement.hpp 第 193 行定义.

参考 is_undereferenceable() , 以及 yconstraint.

参考自 uninitialized_default_construct() , 以及 uninitialized_default_construct_n().

函数调用图:

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

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

inline

以默认初始化原地构造。

模板参数

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

参数

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

自从
  build 716

在文件 placement.hpp 第 141 行定义.

template<typename _type , typename _tObj >

_type* ystdex::construct_default_within | ( | _tObj & | obj | ) |

inline

以默认初始化在对象中构造。

模板参数

  _type | 构造的对象类型。

参数

  obj | 构造的存储对象。

自从
  build 716

在文件 placement.hpp 第 113 行定义.

参考 constfn_addressof().

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

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

inline

以值初始化原地构造。

模板参数

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

参数

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

自从
  build 692

在文件 placement.hpp 第 154 行定义.

参考 CHRLib::args , 以及 yforward.

参考自 ystdex::call_once_init< YSLib::GUIApplication::InitBlock, once_flag >::call_once_init() , 以及 ystdex::tagged_value< bool, _type >::construct().

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

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

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

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

在文件 placement.hpp 第 207 行定义.

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

参考自 uninitialized_value_construct().

函数调用图:

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

_type* ystdex::construct_within | ( | _tObj & | obj,
|  | _tParams &&... | args
| ) |  |

inline

以值初始化在对象中构造。

模板参数

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

参数

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

在文件 placement.hpp 第 126 行定义.

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

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

_type& ystdex::copy_and_swap | ( | _type & | obj,
|  | const _type2 & | new_val
| ) |  |

inline

复制后交换。

注解
  使用 ADL swap 或 std::swap 。

自从
  build 768

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

参考 swap().

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

_type ystdex::copy_or_move | ( | bool | copy,
|  | _type & | obj
| ) |  |

inline

按参数复制或转移。

自从
  build 787

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

参考 as_const().

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

auto ystdex::create_with_allocator | ( | _tAlloc && | a,
|  | _tParams &&... | args
| ) |  | -> decltype(ystdex::make_allocator_guard(a).release())

使用分配器创建对象。

自从
  build 746

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

参考 YSLib::a, CHRLib::args, make_allocator_guard() , 以及 yforward.

函数调用图:
template<typename _type >

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

inline

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

参考自 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 行定义.

参考 NPL::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(), NPL::Environment::DefaultResolve(), NPL::Environment::Define(), NPL::A1::EvaluateLeafToken(), NPL::ImplDeDtor(), NPL::A1::InvokeLiteral(), NPL::IsNPLAExtendedLiteral(), YSLib::Drawing::MultiBitmapData::LockPage(), NPL::Environment::LookupName(), main(), ystdex::void_ref_any::operator _type(), NPL::Environment::Remove(), NPL::A1::ResolveName(), 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 _tFwd >

void ystdex::destroy | ( | _tFwd | first,
|  | _tFwd | last
| ) |  |

inline

参见
  libstdc++ 5 标准库在命名空间 std 内对迭代器范围的实现： _Destroy 模板。

在文件 placement.hpp 第 235 行定义.

参考 destroy_at().

参考自 ystdex::details::optional_base< _type, true >::reset() , 以及 ystdex::optional< _type >::swap().

函数调用图:

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

void ystdex::destroy_at | ( | _type * | location | ) |

inline

原地销毁。

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

在文件 placement.hpp 第 226 行定义.

参考 yconstraint.

参考自 destroy(), destroy_n() , 以及 ystdex::placement_delete< _type, _tPointer >::operator()().

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

_tFwd ystdex::destroy_n | ( | _tFwd | first,
|  | _tSize | n
| ) |  |

inline

在文件 placement.hpp 第 243 行定义.

参考 destroy_at().

函数调用图:
template<typename _tIter >

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

析构迭代器指向的对象。

参数

  i | 迭代器。

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

参见
  destroy

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

参考 is_undereferenceable() , 以及 yconstraint.

参考自 destruct_range().

函数调用图:

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

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

inline

原地析构。

模板参数

  _type | 用于析构对象的类型。

参数

  obj | 析构的对象。

自从
  build 693

参见
  destroy_at

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

参考自 ystdex::standard_layout_storage< _type >::destroy() , 以及 ystdex::tagged_value< bool, _type >::destroy().

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

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

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

注解
  保证顺序析构。

参见
  destroy

在文件 placement.hpp 第 295 行定义.

参考 destruct().

函数调用图:
template<class _type >

auto ystdex::dismiss | ( | _type & | gd | ) | -> decltype(gd.dismiss())

inline

解除操作。

自从
  build 702使用成员 `dismiss` 。

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

参考自 dismiss().

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

void ystdex::dismiss | ( | const one_shot< _func, _tRes, _tState > & | gd | ) |

inline

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

参考 ystdex::one_shot< _func, _tRes, _tState >::fresh.

template<typename _func , bool _bNoThrow>

auto ystdex::dismiss | ( | guard< _func, _bNoThrow > & | gd | ) | -> decltype(dismiss(gd.func))

inline

使用 ADL `dismiss` 。

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

参考 dismiss().

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

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

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

参考 CHRLib::p().

参考自 dynamic_pointer_cast().

函数调用图:

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

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

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

参考 dynamic_pointer_cast() , 以及 CHRLib::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 第 1038 行定义.

参考 CHRLib::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 第 1049 行定义.

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

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

auto ystdex::emplace_hint_in_place | ( | _tAssocCon & | con,
|  | typename _tAssocCon::const_iterator | hint,
|  | _tKey && | k,
|  | _tParams &&... | args
| ) |  | -> typename _tAssocCon::iterator

inline

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

自从
  build 708

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

参考 CHRLib::args, ystdex::details::assoc_con_traits< _tAssocCon >::emplace_hint_in_place() , 以及 yforward.

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

函数调用图:

这是这个函数的调用关系图:
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 第 727 行定义.

参考 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 第 734 行定义.

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

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

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

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

自从
  build 680

返回
  是否成功删除。

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

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

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

函数调用图:

这是这个函数的调用关系图:
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 第 565 行定义.

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

参考自 YSLib::Devices::InputManager::DispatchInput(), erase_left(), main() , 以及 ystdex::details::str_algos< 0 >::trim_left_pos().

函数调用图:

这是这个函数的调用关系图:
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 第 572 行定义.

参考 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 第 579 行定义.

参考 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 第 590 行定义.

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

参考自 erase_left().

函数调用图:

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

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

inline

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

返回
  删除的元素数。

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

template<class _tAssocCon , typename _tKey >

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

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

参考 ystdex::any_ops::distance.

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 第 799 行定义.

参考 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 第 808 行定义.

参考 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 第 603 行定义.

参考 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 第 610 行定义.

参考 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 第 618 行定义.

参考 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 第 629 行定义.

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

参考自 erase_right().

函数调用图:

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

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

inline

判断是否存在子串。

自从
  build 546

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

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

template<class _tString , typename _type >

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

inline

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

参考 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 第 855 行定义.

参考 CHRLib::c, CHRLib::f(), 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 第 1079 行定义.

参考 ystdex::details::assoc_con_traits< _tAssocCon >::extract_key().

参考自 search_map().

函数调用图:

这是这个函数的调用关系图:
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 第 911 行定义.

参考 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 第 932 行定义.

参考 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 第 945 行定义.

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

函数调用图:
template<class _tAssocCon , typename _type , typename = enable_if_convertible_t<_type&, typename _tAssocCon::value_type&>>

const auto ystdex::extract_mapped | ( | _type & | val | ) | -> decltype(details::assoc_con_traits<_tAssocCon>::extract_mapped( is_detected<details::mapped_type_t, _tAssocCon>(), val))

inline

从关联容器的值取映射的值。

自从
  build 792

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

参考 ystdex::details::assoc_con_traits< _tAssocCon >::extract_mapped().

函数调用图:

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 第 743 行定义.

参考 CHRLib::args , 以及 yforward.

template<typename _tString , typename... _tParams>

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

inline

取后缀子字符串。

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

参考 CHRLib::args , 以及 yforward.

参考自 YSLib::IO::GetExtensionOf().

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

_tDst ystdex::general_cast | ( | _tSrc * | v | ) |

inline

一般类型转换。

模板参数

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

自从
  build 175

待办事项:
  扩展接受右值引用参数。

能确保安全隐式转换时使用 static_cast ； 除此之外非虚基类向派生类转换使用 polymophic_downcast； 否则使用 dynamic_cast。

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

template<typename _tDst , typename _tSrc >

_tDst ystdex::general_cast | ( | _tSrc & | v | ) |

inline

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

template<typename _tDst , typename _tSrc >

const _tDst ystdex::general_cast | ( | const _tSrc & | v | ) |

inline

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

template<typename _tKey , typename... _tKeys, typename _fInit , typename... _tParams>

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

inline

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

模板参数

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

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

自从
  build 327

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

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

函数调用图:
template<size_t... _vKeys, typename _fInit , typename... _tParams>

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

inline

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

模板参数

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

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

自从
  build 327

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

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

函数调用图:
template<typename _tString >

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

inline

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

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

自从
  build 304

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

参考 yassume.

参考自 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 第 836 行定义.

参考 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 行定义.

参考 call_value_or().

函数调用图:
template<typename _tString >

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

inline

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

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

自从
  build 697

待办事项:

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

  支持前缀和后缀字符串。

  扩展到一般容器。

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

参考自 NPL::CheckLiteral().

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

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

inline

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

参见
  ystdex::to_string

自从
  build 626

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

参考 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 行定义.

参考 CHRLib::f() , 以及 yforward.

函数调用图:
template<typename _type >

in_place_tag ystdex::in_place | ( | empty_base< _type > |  | ) |

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

参考 YB_ASSUME.

template<size_t _vIdx>

in_place_tag ystdex::in_place | ( | size_t_< _vIdx > |  | ) |

在文件 placement.hpp 第 97 行定义.

参考 YB_ASSUME.

template<class _tAssocCon , typename _tKey , typename _tParam >

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

inline

注解
  使用 ADL extract_mapped 。

自从
  build 681

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

参考 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 第 1267 行定义.

参考 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 第 464 行定义.

参考 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] 。
  LWG 2013 。
  CWG 1581 。
  https://llvm.org/bugs/show_bug.cgi?id=23141 。

自从
  build 612

待办事项:
  支持引用包装。

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

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

参考自 YSLib::UI::ActOnHover(), YSLib::UI::TextPlaceholder::BindByFocus(), ystdex::details::call_for_value(), YSLib::ValueNode::CreateRecursively(), ystdex::call_projection< _tRet(_tParams...), index_sequence< _vSeq... > >::invoke(), ystdex::call_projection< std::tuple< _tParams... >, index_sequence< _vSeq... > >::invoke(), ystdex::details::invoke_nonvoid_impl(), invoke_value_or(), ystdex::thunk< _tRet, _fCallable >::operator()(), YSLib::SetContentWith() , 以及 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 第 372 行定义.

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

参考自 NPL::A1::Forms::CallBinary(), NPL::A1::Forms::CallBinaryAs(), NPL::A1::Forms::CallUnary(), retry_on_cond() , 以及 YSLib::TryInvoke().

函数调用图:

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

auto ystdex::invoke_value_or | ( | _func | f,
|  | _type && | p
| ) |  | -> decay_t<decltype(ystdex::invoke(f, *std::forward<decltype( p )>( p )))>

inline

使用 invoke 调用非空值或取默认值。

参见
  ystdex::call_value_or
  ystdex::invoke

自从
  build 767

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

参考 invoke(), CHRLib::p() , 以及 yforward.

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

auto ystdex::invoke_value_or | ( | _func | f,
|  | _type && | p,
|  | _tOther && | other
| ) |  | -> decltype(p ? ystdex::invoke(f, *std::forward<decltype( p )>( p )) : std::forward<decltype( other )>( other ))

inline

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

参考 invoke(), CHRLib::CharSet::other, CHRLib::p() , 以及 yforward.

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

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

inline

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

参考 platform::bool, invoke(), CHRLib::CharSet::other, CHRLib::p() , 以及 yforward.

函数调用图:

bool ystdex::is_date_range_valid | ( | const std::tm & | t | ) |

inline

判断 std::tm 的日期数据成员范围是否有效。

自从
  build 704

在文件 ctime.h 第 41 行定义.

参考自 platform::FAT::FetchDateTime().

这是这个函数的调用关系图:
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().

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

bool ystdex::is_time_no_leap_valid | ( | const std::tm & | t | ) |

inline

判断 std::tm 的时间数据成员范围是否有效。

在文件 ctime.h 第 48 行定义.

参考自 platform::FAT::FetchDateTime().

这是这个函数的调用关系图:
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 行定义.

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

函数调用图:

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

inline

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

自从
  build 738

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

参考 CHRLib::c.

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

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

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

inline

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

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

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

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

inline

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

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

参考 CHRLib::c, 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 行定义.

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

参考自 iscntrl_ISO8859_1().

函数调用图:

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

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

inline

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

注解
  ISO C 和 ISO C++ 保证基本字符集中的数字字符具有从小到大连续的整数值表示。
  可作为替代 MSVCRT 的实现的变通。

参见
  http://stackoverflow.com/questions/2898228/can-isdigit-legitimately-be-locale-dependent-in-c 。
  ISO C11 5.2.1/3 。
  ISO C++11 2.3/3 。

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

参考 CHRLib::c.

参考自 NPL::IsNPLAExtendedLiteral().

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

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 行定义.

参考 CHRLib::c, isprint_ISO8859_1() , 以及 yimpl.

函数调用图:

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

inline

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

参见
  ISO C11 7.4/3 脚注。

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

参考 CHRLib::c.

参考自 isprint_ISO8859_1().

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

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

inline

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

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

参考 CHRLib::c, 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 行定义.

参考 CHRLib::f(), CHRLib::p() , 以及 yforward.

函数调用图:
template<class _tString >

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

inline

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

自从
  build 552

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

参考 YSLib::Text::str.

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

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

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

inline

自从
  build 659

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

参考 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 第 664 行定义.

参考 YSLib::Text::str , 以及 yconstraint.

template<typename _tAlloc >

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

构造分配器守护。

自从
  build 595

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

参考自 create_with_allocator().

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

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

inline

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

template<typename _type , class _tTuple >

_type ystdex::make_from_tuple | ( | _tTuple && | t | ) |

inline

从元组构造指定类型的值。

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

参考 yforward.

template<typename _type >

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

inline

在文件 pointer.hpp 第 326 行定义.

参考 CHRLib::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::GetValuePtrOf(), 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 , typename _tOther , typename... _tParams>

optional<_type> ystdex::make_optional | ( | std::initializer_list< _tOther > | il,
|  | _tParams &&... | args
| ) |  |

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

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

template<typename _type , typename... _tParams>

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

inline

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

注解
  YBase optional 扩展。

自从
  build 655

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

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

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

pun_ptr<_type> ystdex::make_pun | ( | _tObj & | obj,
|  | _tParams &&... | args
| ) |  |

inline

构造避免严格别名分析限制的缓冲独占所有权指针指定的值初始化对象。

在文件 type_pun.hpp 第 279 行定义.

参考 CHRLib::args , 以及 yforward.

template<typename _type , typename _tObj >

pun_ptr<_type> ystdex::make_pun_default | ( | _tObj & | obj | ) |

inline

构造避免严格别名分析限制的缓冲独占所有权指针指定的默认初始化对象。

自从
  build 717

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

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 第 879 行定义.

参考自 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 第 886 行定义.

参考 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 第 915 行定义.

参考 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 第 922 行定义.

参考 size() , 以及 yforward.

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

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

delete

template<typename _tDst , typename _tSrc >

_tDst ystdex::narrow | ( | _tSrc | v | ) |

inline

注解
  使用 ADL narrow_cast 。

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

参考 CHRLib::d.

template<typename _tDst , typename _tSrc >

_tDst ystdex::narrow_cast | ( | _tSrc | v | ) |

inline

可能缩小数值范围的显式转换。

自从
  build 703

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

参考 max(), min() , 以及 v.

参考自 ystdex::details::not_widen_cast().

函数调用图:

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

byte_order ystdex::native_byte_order | ( |  | ) |

inline

测试本机字节序。

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

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

bool ystdex::native_little_bit_order | ( |  | ) |

inline

测试本机位序。

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

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

template<typename _type >

auto ystdex::nonnull_or | ( | _type && | p | ) | -> decay_t<decltype(std::forward<decltype( p )>( p ))>

inline

取非空引用或默认值。

自从
  build 749

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

参考 CHRLib::p() , 以及 yforward.

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

auto ystdex::nonnull_or | ( | _type && | p,
|  | _tOther && | other
| ) |  | -> decltype(p ? std::forward<decltype( p )>( p ) : std::forward<decltype( other )>( other ))

inline

自从
  build 750

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

参考 CHRLib::CharSet::other, CHRLib::p() , 以及 yforward.

函数调用图:
template<typename _tOther , typename _type , typename _tSentinal = nullptr_t>

auto ystdex::nonnull_or | ( | _type && | p,
|  | _tOther && | other,
|  | _tSentinal && | last
| ) |  | -> decltype(!bool(p == std::forward<decltype( last )>( last )) ? std::forward<decltype( p )>( p ) : std::forward<decltype( other )>( other ))

inline

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

参考 platform::bool, CHRLib::CharSet::other, CHRLib::p() , 以及 yforward.

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

_tDst ystdex::not_widen | ( | _tSrc | v | ) |

inline

注解
  使用 ADL not_widen_cast 。

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

参考 CHRLib::d.

template<typename _tDst , typename _tSrc >

_tDst ystdex::not_widen_cast | ( | _tSrc | v | ) |

inline

可能缩小数值范围或数值范围最大和最小值保持不变的转换。

注解
  使用 ADL narrow_cast 。

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

参考 max(), min(), ystdex::details::not_widen_cast() , 以及 v.

参考自 CHRLib::ImplRet().

函数调用图:

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

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

在简单 NTCTS 内查找字符。

前置条件
  断言： `s` 。

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

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

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

参考自 ntctschr() , 以及 platform::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 行定义.

参考 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 行定义.

参考 CHRLib::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 _type1 , typename _type2 >

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

inline

在文件 pointer.hpp 第 305 行定义.

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

template<typename _type >

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

inline

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

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

函数调用图:
template<typename _type >

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

inline

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

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

函数调用图:
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 _type1 , typename _type2 >

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

inline

在文件 pointer.hpp 第 312 行定义.

参考 YSLib::Drawing::p2.

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 第 485 行定义.

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

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 行定义.

参考 NPL::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 _type1 , typename _type2 >

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

inline

自从
  build 675

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

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

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 行定义.

参考 NPL::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 N4606 20.6.6[optional.relops] 。
  WG21 N4606 20.6.7[optional.nullops] 。
  WG21 N4606 20.6.8[optional.comp_with_t] 。

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

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

template<typename _type >

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

inline

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

参考 NPL::x.

template<typename _type >

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

inline

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

参考 platform::bool.

template<typename _type >

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

inline

自从
  build 316

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

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

函数调用图:
template<typename _type >

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

inline

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

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

函数调用图:
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 第 609 行定义.

参考 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 第 616 行定义.

参考 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 第 624 行定义.

参考 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 第 632 行定义.

参考 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 第 1144 行定义.

参考 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, CHRLib::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, CHRLib::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 第 273 行定义.

参考 is_undereferenceable(), NPL::x, YSLib::UI::y , 以及 yconstraint.

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

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

inline

类型参数化静态对象。

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

自从
  build 303

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

参考自 YSLib::GLocalStaticCache< _type, _tPointer >::GetStaticPtrRef().

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

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

inline

非类型参数化静态对象。

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

自从
  build 301

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

template<typename _pDst , class _tSrc >

_pDst ystdex::polymorphic_cast | ( | _tSrc * | v | ) |

inline

多态类指针类型转换。

模板参数

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

前置条件
  静态断言： _tSrc 是多态类。
  静态断言： _pDst 是内建指针。

异常

  std::bad_cast | dynamic_cast 失败。

自从
  build 175

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

参考 CHRLib::p().

函数调用图:
template<typename _pDst , class _tSrc >

_pDst ystdex::polymorphic_crosscast | ( | _tSrc * | v | ) |

inline

多态类指针交叉转换。

模板参数

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

前置条件
  静态断言： _tSrc 是多态类。
  静态断言： _pDst 是内建指针。
  断言： dynamic_cast 成功。

返回
  非空结果。

注解
  空指针作为参数一定失败。

自从
  build 179

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

参考 CHRLib::p() , 以及 yassume.

函数调用图:
template<typename _rDst , class _tSrc >

_rDst ystdex::polymorphic_crosscast | ( | _tSrc & | v | ) |

inline

模板参数

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

前置条件
  静态断言： _rDst 是左值引用。

自从
  build 496

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

template<typename _rDst , class _tSrc >

enable_if_t<!is_reference<_tSrc>::value, _rDst> ystdex::polymorphic_crosscast | ( | _tSrc && | v | ) |

inline

模板参数

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

前置条件
  静态断言： _rDst 是右值引用。

自从
  build 496

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

参考 v.

template<typename _pDst , class _tSrc >

_pDst ystdex::polymorphic_downcast | ( | _tSrc * | v | ) |

inline

多态类指针向派生类指针转换。

自从
  build 674

模板参数

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

前置条件
  静态断言： _tSrc 是多态类。
  静态断言： _pDst 是内建指针。
  静态断言： _tSrc 是 _pDst 指向的类去除修饰符后的基类。
  断言： dynamic_cast 成功。

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

参考 v , 以及 yassume.

template<typename _rDst , class _tSrc >

enable_if_t<is_lvalue_reference<_rDst>::value, _rDst> ystdex::polymorphic_downcast | ( | _tSrc & | v | ) |

inline

模板参数

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

前置条件
  静态断言： _rDst 是左值引用。

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

参考 v.

template<typename _rDst , class _tSrc >

enable_if_t<is_rvalue_reference<_rDst>::value && !is_reference<_tSrc>::value, _rDst> ystdex::polymorphic_downcast | ( | _tSrc && | v | ) |

inline

模板参数

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

前置条件
  静态断言： _rDst 是右值引用。

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

参考 v.

template<class _tDst , typename _tSrc , typename _tDeleter >

enable_if_t<!is_reference<_tDst>::value && !is_array<_tDst>::value, std::unique_ptr<_tDst, _tDeleter> > ystdex::polymorphic_downcast | ( | std::unique_ptr< _tSrc, _tDeleter > && | v | ) |

inline

模板参数

  _tSrc | 源的元素类型。
  _tDst | 目标的元素类型。
  _tDeleter | 删除器类型。

前置条件
  _tDst 可通过 `release()` 取得的指针和删除器右值构造。
  断言：调用 polymorphic_downcast 转换 `release()` 取得的指针保证无异常抛出。

注解
  使用 ADL 调用 polymorphic_downcast 转换 `release()` 取得的指针。

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

参考 v, yassume , 以及 ynoexcept_assert.

template<class _tDst , typename _tSrc >

enable_if_t<!is_reference<_tDst>::value && !is_array<_tDst>::value, std::shared_ptr<_tDst> > ystdex::polymorphic_downcast | ( | const std::unique_ptr< _tSrc > & | v | ) |

inline

模板参数

  _tSrc | 源的元素类型。
  _tDst | 目标的元素类型。

前置条件
  _tDst 可通过 `get()` 取得的指针和删除器右值构造。

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

参考 static_pointer_cast(), v , 以及 yassume.

函数调用图:
template<class _tCon >

bool ystdex::pop_back_val | ( | _tCon & | con,
|  | const typename _tCon::value_type & | value
| ) |  |

若容器末尾存在指定值的元素则移除。

自从
  build 545

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

template<class _tCon >

bool ystdex::pop_front_val | ( | _tCon & | con,
|  | const typename _tCon::value_type & | value
| ) |  |

若容器起始存在指定值的元素则移除。

自从
  build 545

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

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 行定义.

参考 CHRLib::p().

参考自 ystdex::any_ops::value_handler< _tHolder >::manage(), ystdex::any_ops::ref_handler< _type >::manage(), ystdex::any_ops::holder_handler< _tHolder >::manage(), 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 行定义.

参考 CHRLib::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 第 801 行定义.

参考 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 第 809 行定义.

参考 CHRLib::s.

template<typename _tString , typename _tPrefix , typename _tSuffix >

_tString ystdex::quote | ( | const _tString & | str,
|  | const _tPrefix & | pfx,
|  | const _tSuffix & | sfx
| ) |  |

inline

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

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 第 316 行定义.

参考 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 第 328 行定义.

参考 YSLib::Text::buf, make_reverse_iterator() , 以及 yconstraint.

函数调用图:
template<typename _type >

lref<_type> ystdex::ref | ( | _type & | t | ) |

inline

构造引用包装。

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

参考自 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(), NPL::Environment::DefaultResolve(), YSLib::UI::FetchTopLevel(), YSLib::UI::Widget::InitializeEvents(), YSLib::UI::Panel::MoveToFront(), YSLib::UI::MTextList::MTextList(), YSLib::UI::MLinearUIContainer::operator-=(), NPL::PrintNode(), pvoid_ref(), NPL::A1::ReduceChildren(), YReader::TextInfoBox::Refresh(), YSLib::UI::RemoveWidgets(), NPL::A1::ReplaceSeparatedChildren(), NPL::A1::REPLContext::REPLContext(), YSLib::UI::SetRendererOnHover(), YSLib::Drawing::Font::SetStyle(), stable_unique(), 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 第 541 行定义.

参考自 ref_opt().

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

_type& ystdex::ref_opt | ( |  | ) |

inline

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

参考 ref_opt().

函数调用图:

void ystdex::reraise | ( | int | sig | ) |

调用 restore_signal 重置默认信号处理器后调用 `raise` 引发信号。

注解
  异步信号安全。
  仅在确保依赖 POSIX 或其它扩展定义的确定行为时允许在多线程环境下使用。

警告
  ISO C11 指定多线程环境调用 `signal` 行为未定义。

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

参考 restore_signal() , 以及 platform::sig.

函数调用图:

void ystdex::restore_signal | ( | int | sig | ) |

inline

调用 `signal` 重置默认信号处理器。

自从
  build 623

在文件 csignal.h 第 41 行定义.

参考 platform::sig.

参考自 reraise().

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

_tString&& ystdex::restrict_length | ( | _tString && | str,
|  | const typename string_traits< _tString >::size_type | n
| ) |  |

inline

限制长度不超过指定参数。

自从
  build 608

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

参考 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` 的字符串类型。

参见
  LWG 2466 。

自从
  build 699

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

参考 CHRLib::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 第 1152 行定义.

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

参考自 NPL::Environment::DefaultResolve(), 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 第 676 行定义.

参考 YSLib::Text::str.

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

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

_tString&& ystdex::rtrim | ( | _tString && | str,
|  | const remove_reference_t< _tString > & | t
| ) |  |

inline

自从
  build 659

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

参考 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 第 695 行定义.

参考 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 第 1139 行定义.

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

参考自 insert_or_assign(), insert_or_assign_hint(), search_map() , 以及 search_map_by().

函数调用图:

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

std::pair<typename _tAssocCon::iterator, bool> ystdex::search_map | ( | _tAssocCon & | con,
|  | const _tKey & | k
| ) |  |

inline

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

参考 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 第 1163 行定义.

参考 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 第 1183 行定义.

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

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

std::pair<typename _tAssocCon::const_iterator, bool> ystdex::search_map_by | ( | _func | f,
|  | const _tAssocCon & | con,
|  | _tParams &&... | args
| ) |  |

按指定键值搜索指定映射并执行操作。

前置条件
  最后的参数构造新的值。

返回
  插入成员的迭代器。

注解
  行为类似 std::map::operator[] 。

自从
  build 734

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

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

参考自 YSLib::UI::GetEvent(), search_map_by(), try_emplace() , 以及 try_emplace_hint().

函数调用图:

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

std::pair<typename _tAssocCon::iterator, bool> ystdex::search_map_by | ( | _func | f,
|  | _tAssocCon & | con,
|  | _tParams &&... | args
| ) |  |

inline

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

参考 CHRLib::args, as_const(), cast_mutable(), search_map_by() , 以及 yforward.

函数调用图:
template<typename _func >

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

inline

顺序递归调用。

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

参考自 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 第 229 行定义.

参考 CHRLib::f(), seq_apply() , 以及 yforward.

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

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

inline

顺序插入值至指定容器。

自从
  build 338

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

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

函数调用图:
template<typename _type >

const _type& ystdex::set_value_move | ( | const _type & | x | ) |

inline

转移集合元素。

后置条件
  转移后元素和参数比较相等。

自从
  build 673

在文件 set.hpp 第 49 行定义.

参考 NPL::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 第 1200 行定义.

参考 CHRLib::args, YSLib::Text::str , 以及 vsfmt().

参考自 YSLib::Drawing::FontCache::FontCache(), NPL::A1::LoadNode(), NPL::A1::LoadNodeSequence(), YSLib::Drawing::MultiBitmapData::LockPage(), main(), NPL::A1::Forms::MatchParameter(), NPL::A1::ReduceCombined(), NPL::Environment::ThrowForInvalidType(), YSLib::Drawing::Typeface::Typeface(), NPL::A1::Forms::Undefine(), NPL::A1::Forms::Unwrap() , 以及 NPL::A1::Forms::WrapOnce().

函数调用图:

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

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

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

参见
  ystdex::sfmt

自从
  build 350

template<typename _tValue , typename _type = _tValue>

std::shared_ptr<decay_t<_type> > ystdex::share_copy | ( | const _tValue & | v | ) |

inline

复制值创建对应的 std::shared_ptr 实例的对象。

注解
  使用 ADL make_shared 。

自从
  build 783

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

参考 make_shared() , 以及 yforward.

参考自 YSLib::UI::Animate().

函数调用图:

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

std::shared_ptr<decay_t<_type> > ystdex::share_forward | ( | _tValue && | v | ) |

inline

传递值创建对应的 std::shared_ptr 实例的对象。

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

参考 make_shared(), v , 以及 yforward.

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

std::shared_ptr<decay_t<_type> > ystdex::share_move | ( | _tValue && | v | ) |

inline

转移值创建对应的 std::shared_ptr 实例的对象。

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

参考 make_shared() , 以及 v.

参考自 NPL::A1::Forms::Lambda(), NPL::A1::Forms::Vau() , 以及 NPL::A1::Forms::VauWithEnvironment().

函数调用图:

这是这个函数的调用关系图:
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(), NPL::A1::Forms::If(), YSLib::UI::ImplDeDtor(), YSLib::UI::Menu::IsItemEnabled(), NPL::IsNPLAExtendedLiteral(), 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(), 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() , 以及 platform::FileDescriptor::WriteContent().

这是这个函数的调用关系图:
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 第 142 行定义.

template<class _tCon >

void ystdex::sort_unique | ( | _tCon & | con | ) |

inline

排序指定序列容器，保留不重复元素。

前置条件
  容器的迭代器满足随机迭代器要求。

自从
  build 414

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

参考 ystdex::cpp2011::begin(), ystdex::cpp2011::end() , 以及 sort_unique().

函数调用图:
template<typename _type >

_type ystdex::square | ( | _type | x | ) |

inline

计算平方。

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

参考 NPL::x.

参考自 quad().

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

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

智能指针转换。

自从
  build 595

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

参考 CHRLib::p().

参考自 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 第 1013 行定义.

参考 CHRLib::p().

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

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

inline

转换表示数的字符串。

自从
  build 542

待办事项:

  支持 std::string 以外类型字符串。

  支持标准库以外的转换。

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

参考 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, CHRLib::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 行定义.

参考 CHRLib::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, CHRLib::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 行定义.

参考 CHRLib::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 行定义.

参考 CHRLib::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, CHRLib::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 行定义.

参考 CHRLib::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 行定义.

参考 CHRLib::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, CHRLib::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(), CHRLib::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 第 288 行定义.

参考 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 第 294 行定义.

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

函数调用图:
template<typename _tChar >

_tChar* ystdex::string_begin | ( | _tChar * | str | ) |

inline

自从
  build 664

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

参考 YSLib::Text::str , 以及 yconstraint.

template<typename _tElem >

auto ystdex::string_begin | ( | std::initializer_list< _tElem > | il | ) | -> decltype(il.begin())

inline

参见
  CWG 1591 。

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

template<class _tRange >

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

inline

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

参考 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 第 325 行定义.

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

函数调用图:
template<typename _tChar >

_tChar* ystdex::string_end | ( | _tChar * | str | ) |

inline

自从
  build 664

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

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

函数调用图:
template<typename _tElem >

auto ystdex::string_end | ( | std::initializer_list< _tElem > | il | ) | -> decltype(il.end())

inline

参见
  CWG 1591 。

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

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 行定义.

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

参考自 YSLib::UI::TreeList::Bind(), copy_and_swap(), NPL::Environment::Define(), 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(), NPL::Environment::Redefine(), YSLib::RestrictLessEqual(), YSLib::Drawing::CompactPixmap::SetSizeSwap(), stable_unique(), ystdex::basic_tstring_view< _tChar, _tTraits, 0 >::swap(), ystdex::basic_string_view< _tChar, _tTraits >::swap(), ystdex::optional< _type >::swap(), ystdex::details::any_base::swap(), ystdex::any::swap(), swap_underlying(), YSLib::DS::ShlDS::SwapDesktops(), YSLib::UI::TextPlaceholder::SwapLabel(), YSLib::UI::TextPlaceholder::SwapText(), YSLib::UI::TextPlaceholder::SwapTextBox(), YSLib::Application::Switch(), platform_ex::UpdateKeyStates(), YSLib::UI::TextBox::UpdateTextBoxClippedText() , 以及 vswap().

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

void ystdex::swap | ( | sequence_container_adaptor< _tSeqCon > & | x,
|  | sequence_container_adaptor< _tSeqCon > & | y
| ) |  |

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

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

参考自 ystdex::container_adaptor< _tSeqCon >::swap().

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

void ystdex::swap | ( | observer_ptr< _type > & | p1,
|  | observer_ptr< _type > & | p2
| ) |  |

inline

在文件 pointer.hpp 第 320 行定义.

参考 YSLib::Drawing::p2.

参考自 ystdex::nptr< _type >::swap() , 以及 ystdex::observer_ptr< _type >::swap().

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

void ystdex::swap | ( | optional< _type > & | x,
|  | optional< _type > & | y
| ) |  |

参见
  WG21 N4606 20.6.9[optional.specalg] 。

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

参考 YSLib::UI::y.

参考自 ystdex::optional< _type >::swap().

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

void ystdex::swap_underlying | ( | _type & | x,
|  | _type & | y
| ) |  |

交换相同标准布局类型可修改左值的存储。

自从
  build 620

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

参考 swap().

函数调用图:
template<typename _type >

enable_if_t<is_nothrow_constructible<_type, volatile _type&&>) && is_nothrow_assignable<_type&, volatile _type&&>) && is_nothrow_assignable<volatile _type&, _type&&>)> ystdex::swap_volatile | ( | _type & | x,
|  | volatile _type & | y
| ) |  |

交换非 volatile 左值和 volatile 左值。

前置条件
  可赋值。

自从
  build 704

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

参考自 swap_volatile() , 以及 vswap().

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

auto ystdex::swap_volatile | ( | volatile _type & | x,
|  | _type & | y
| ) |  | -> decltype(ystdex::swap_volatile(y, x))

inline

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

参考 swap_volatile().

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

void ystdex::swap_volatile | ( | _type(&) | x[_vN],
|  | add_volatile_t< _type[_vN]> & | y
| ) |  |

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

参考 swap_volatile() , 以及 yunseq.

函数调用图:
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 第 206 行定义.

参考 CHRLib::args , 以及 yforward.

参考自 ystdex::threading::lock_base< _tMutex, _bEnableCheck >::check_lock(), platform::FAT::CheckColons(), platform::CreateHardLink(), platform::CreateSymbolicLink(), YSLib::IO::EnsureDirectory(), platform::FetchCurrentWorkingDirectory(), platform::FileDescriptor::GetFlags(), platform::HaveSameContents(), platform::MappedFile::MappedFile(), YSLib::IO::OpenFile(), platform::HDirectory::operator++(), platform::ReadLink(), platform::FileDescriptor::SetBlocking(), platform::FileDescriptor::SetFlags(), platform::FileDescriptor::SetMode(), platform::FileDescriptor::SetNonblocking(), ystdex::threading::lock_base< _tMutex, _bEnableCheck >::unlock() , 以及 platform_ex::Windows::YB_NONNULL().

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

void ystdex::throw_error | ( | std::error_condition | cond,
|  | _tParams &&... | args
| ) |  |

inline

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

参考 CHRLib::args , 以及 yforward.

template<class _type = std::system_error, typename... _tParams>

void ystdex::throw_error | ( | int | ev,
|  | _tParams &&... | args
| ) |  |

inline

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

参考 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 第 224 行定义.

参考 CHRLib::args , 以及 yforward.

void ystdex::throw_invalid_construction | ( |  | ) |

related

在文件 ystdex/exception.cpp 第 49 行定义.

参考自 YSLib::PointerHolder< _type, _tTraits >::Create(), YSLib::CreateHolderInPlace(), NPL::LiftToReference(), ystdex::details::try_create_with_allocator_impl(), ystdex::any_ops::value_handler< _tHolder >::try_init() , 以及 ystdex::details::try_new_impl().

这是这个函数的调用关系图:
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::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 第 1023 行定义.

参考 to_string().

函数调用图:

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

inline

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

参考 to_string().

函数调用图:
template<typename _type >

enable_if_t<is_enum<_type>::value, std::string> ystdex::to_string | ( | _type | val | ) |

inline

自从
  build 538

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

参考 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 第 1046 行定义.

参考 NPL::x.

参考自 to_string().

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

std::wstring ystdex::to_wstring | ( | unsigned char | val | ) |

inline

自从
  build 565

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

参考 to_wstring().

参考自 to_wstring().

函数调用图:

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

std::wstring ystdex::to_wstring | ( | unsigned short | val | ) |

inline

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

参考 to_wstring().

函数调用图:
template<typename _type >

enable_if_t<is_enum<_type>::value, std::wstring> ystdex::to_wstring | ( | _type | val | ) |

inline

自从
  build 664

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

参考 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 第 1080 行定义.

参考 NPL::x.

参考自 to_wstring().

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

_tChar ystdex::tolower | ( | _tChar | c | ) |

inline

转换大小写字符。

注解
  和 ISO C 标准库对应接口不同而和 ISO C++ <locale> 中的接口类似， 参数和返回值是字符类型而不是对应的整数类型。

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

参考 CHRLib::c.

参考自 platform::FAT::EntryData::GenerateAlias() , 以及 ntctsicmp().

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

char ystdex::tolower | ( | char | c | ) |

inline

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

参考 CHRLib::c.

template<typename _tChar >

_tChar ystdex::toupper | ( | _tChar | c | ) |

inline

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

参考 CHRLib::c.

char ystdex::toupper | ( | char | c | ) |

inline

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

参考 CHRLib::c.

template<class _tCon >

_tCon&& ystdex::trail | ( | _tCon && | con,
|  | const typename decay_t< _tCon >::value_type & | value = `{}`
| ) |  |

保证非空容器以参数指定的元素结尾。

自从
  build 567

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

template<class _tCon , typename... _tParams>

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

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

参考 CHRLib::args , 以及 yforward.

template<class _tString >

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

inline

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

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

参考 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 第 715 行定义.

参考 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 第 726 行定义.

参考 ltrim(), rtrim(), YSLib::Text::str, yconstraint , 以及 yforward.

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

_type* ystdex::try_create_with_allocator | ( | _tAlloc && | a,
|  | _tParams &&... | args
| ) |  |

尝试调用 ystdex::create_with_allocator 表达式创建对象。

自从
  build 746

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

参考 YSLib::a, CHRLib::args , 以及 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 第 1230 行定义.

参考 CHRLib::args, emplace_hint_in_place(), YSLib::i, search_map_by() , 以及 yforward.

参考自 YSLib::ValueNode::AddChild(), YSLib::ValueNode::AddValue(), YSLib::ValueNode::AddValueTo(), YSLib::ValueNode::PlaceValue() , 以及 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 第 1241 行定义.

参考 CHRLib::args, emplace_hint_in_place(), YSLib::i, search_map_by() , 以及 yforward.

参考自 YSLib::ValueNode::AddChild(), YSLib::ValueNode::AddValue() , 以及 YSLib::ValueNode::try_emplace().

函数调用图:

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

_type* ystdex::try_new | ( | _tParams &&... | args | ) |

尝试调用 new 表达式创建对象。

异常

  invalid_construction | 调用非合式。

自从
  build 737

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

参考 CHRLib::args , 以及 yforward.

static const auto ystdex::tuple_not_found | ( | size_t(-1) |  | ) |

static

表示没有找到的索引。

参见
  WG21 P0088R0 。
  WG21 P0088R1 。

自从
  build 651

待办事项:
  重命名为 `variant_npos` ，转移到合适的头文件。

template<typename _type >

const type_info& ystdex::type_id | ( |  | ) |

参见
  type_info

在文件 typeinfo.h 第 149 行定义.

参考自 NPL::A1::Reduce().

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

underlying_type_t<_type> ystdex::underlying | ( | _type | val | ) |

inline

取枚举值的底层整数。

自从
  build 629

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

参考自 to_string() , 以及 to_wstring().

这是这个函数的调用关系图:
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] 。

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

参考 CHRLib::args, construct(), YSLib::i, YB_Impl_UninitGuard_Begin, YB_Impl_UninitGuard_End , 以及 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] 。

在文件 placement.hpp 第 434 行定义.

参考 CHRLib::args, construct(), YSLib::i, YB_Impl_UninitGuard_Begin, YB_Impl_UninitGuard_End , 以及 yforward.

函数调用图:
template<typename _tFwd >

void ystdex::uninitialized_default_construct | ( | _tFwd | first,
|  | _tFwd | last
| ) |  |

inline

在范围内未初始化放置构造。

自从
  build 716

参见
  WG21 N4606 20.10.2[uninitialized.construct.default] 。

在文件 placement.hpp 第 326 行定义.

参考 construct_default(), YB_Impl_UninitGuard_Begin , 以及 YB_Impl_UninitGuard_End.

函数调用图:
template<typename _tFwd , typename _tSize >

_tFwd ystdex::uninitialized_default_construct_n | ( | _tFwd | first,
|  | _tSize | n
| ) |  |

在文件 placement.hpp 第 336 行定义.

参考 construct_default(), YB_Impl_UninitGuard_Begin , 以及 YB_Impl_UninitGuard_End.

函数调用图:
template<typename _tIn , class _tFwd >

_tFwd ystdex::uninitialized_move | ( | _tIn | first,
|  | _tIn | last,
|  | _tFwd | result
| ) |  |

转移初始化范围。

参见
  WG21 N4606 20.10.10.5[uninitialized.move] 。

自从
  build 716

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

参考 construct(), YB_Impl_UninitGuard_Begin , 以及 YB_Impl_UninitGuard_End.

函数调用图:
template<typename _tIn , typename _tSize , class _tFwd >

std::pair<_tIn, _tFwd> ystdex::uninitialized_move_n | ( | _tIn | first,
|  | _tSize | n,
|  | _tFwd | result
| ) |  |

在文件 placement.hpp 第 389 行定义.

参考 construct(), YB_Impl_UninitGuard_Begin , 以及 YB_Impl_UninitGuard_End.

函数调用图:
template<typename _tFwd >

void ystdex::uninitialized_value_construct | ( | _tFwd | first,
|  | _tFwd | last
| ) |  |

inline

参见
  WG21 N4606 20.10.3[uninitialized.construct.value] 。

在文件 placement.hpp 第 349 行定义.

参考 construct_range(), YB_Impl_UninitGuard_Begin , 以及 YB_Impl_UninitGuard_End.

函数调用图:
template<typename _tFwd , typename _tSize >

_tFwd ystdex::uninitialized_value_construct_n | ( | _tFwd | first,
|  | _tSize | n
| ) |  |

在文件 placement.hpp 第 358 行定义.

参考 construct(), YB_Impl_UninitGuard_Begin , 以及 YB_Impl_UninitGuard_End.

函数调用图:
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 第 292 行定义.

参考 is_undereferenceable() , 以及 yconstraint.

函数调用图:
template<typename _type >

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

inline

解除引用包装。

注解
  默认仅提供对 std::reference_wrapper 和 lref 的实例类型的重载。
  使用 ADL 。

自从
  build 348

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

参考 NPL::x.

template<typename _type >

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

inline

自从
  build 554

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

参考 NPL::x.

template<typename _func , typename... _tParams>

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

inline

无序调用。

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

参考 CHRLib::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 第 1004 行定义.

参考 yforward.

template<typename _type >

auto ystdex::value_or | ( | _type && | p | ) | -> decay_t<decltype(*std::forward<decltype( p )>( p ))>

inline

取非空值或默认值。

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

参考 CHRLib::p() , 以及 yforward.

参考自 NPL::A1::Forms::If() , 以及 NPL::ParseNPLANodeString().

函数调用图:

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

auto ystdex::value_or | ( | _type && | p,
|  | _tOther && | other
| ) |  | -> decltype(p ? *std::forward<decltype( p )>( p ) : std::forward<decltype( other )>( other ))

inline

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

参考 CHRLib::CharSet::other, CHRLib::p() , 以及 yforward.

函数调用图:
template<typename _tOther , typename _type , typename _tSentinal = nullptr_t>

auto ystdex::value_or | ( | _type && | p,
|  | _tOther && | other,
|  | _tSentinal && | last
| ) |  | -> decltype(!bool(p == std::forward<decltype( last )>( last )) ? *std::forward<decltype( p )>( p ) : std::forward<decltype( other )>( other ))

inline

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

参考 platform::bool, CHRLib::CharSet::other, CHRLib::p() , 以及 yforward.

函数调用图:
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 第 188 行定义.

参考 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 第 921 行定义.

参考 concat(), ystdex::any_ops::distance , 以及 size().

函数调用图:
template<class _tVector , typename _tRange >

void ystdex::vector_concat | ( | _tVector & | vec,
|  | _tRange && | c
| ) |  |

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

参考 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 第 1171 行定义.

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

参考自 sfmt().

函数调用图:

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

void ystdex::vswap | ( | _type && | x,
|  | _type2 && | y
| ) |  |

交换可能是 volatile 的左值或右值。

前置条件
  参数类型可交换，或具有一个 volatile 类型可用 swap_volatie 交换。

自从
  build 704

注解
  使用 ADL swap 或 std::swap 。

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

参考 swap() , 以及 yforward.

参考自 ystdex::details::state_guard_traits< _type, _tToken, true >::restore() , 以及 ystdex::details::state_guard_traits< _type, _tToken, true >::save().

函数调用图:

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

auto ystdex::vswap | ( | _type && | x,
|  | _type2 && | y
| ) |  | -> enable_if_t <details::swap_volatile_avail<_type, _type2>::value>

inline

注解
  使用 ADL swap_volatile 或 ystdex::swap_volatile 。

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

参考 swap_volatile() , 以及 yforward.

函数调用图:
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 第 981 行定义.

参考 min().

参考自 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 第 994 行定义.

参考 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 第 1005 行定义.

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

函数调用图:
template<size_t _vWidth>

void ystdex::write_uint_be | ( | byte * | buf,
|  | typename make_width_int< _vWidth >::unsigned_type | val
| ) |  |

inline

向字节缓冲区写入指定宽的大端序无符号整数。

自从
  build 623

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

参考 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 第 352 行定义.

参考 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 行定义.

参考 platform::msg, 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

## 变量说明

const struct ystdex::default_init_t ystdex::default_init

参考自 ystdex::details::any_base::get(), ystdex::details::any_base::get_holder() , 以及 ystdex::details::any_base::type().

const first_tag ystdex::get_first {}

操纵子。

自从
  build 288

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

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 第 592 行定义.

参考自 YSLib::FetchFontFamilyNames(), YSLib::UI::FetchVisualStyleNames(), YSLib::UI::LocateForTrace() , 以及 YReader::ShlTextReader::SettingSession::SettingSession().

const second_tag ystdex::get_second {}

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

const second_tag ystdex::get_value {}

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

参考自 YSLib::UI::MUIContainer::begin(), YSLib::UI::MUIContainer::PaintVisibleChildren() , 以及 YSLib::GUIHost::~GUIHost().

const struct ystdex::nullopt_t ystdex::nullptr = {}

const struct ystdex::value_init_t ystdex::value_init