YSTest: ystdex::details 命名空间参考

YSTest PreAlpha_b800_20170810 The YSLib Test Project

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

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

类 | 类型定义 | 函数
ystdex::details 命名空间参考
Cast | Hash Extensions | Allcators Template Meta Programing » Meta Operations » | Metafunctions

## 类

struct | any_base
struct | any_emplace
struct | assoc_con_traits
struct | bin_ops
struct | bin_ops< 0, _type, _type2, dep_ops::no_constfn >
struct | bin_ops< 0, _type, _type2, dep_ops::use_constfn >
struct | bin_ops< 1, _type, _type2, dep_ops::no_constfn >
struct | bin_ops< 1, _type, _type2, dep_ops::use_constfn >
struct | bin_ops< 10, _type, _type2, dep_ops::no_constfn >
struct | bin_ops< 10, _type, _type2, dep_ops::use_constfn >
struct | bin_ops< 11, _type, _type2, dep_ops::no_constfn >
struct | bin_ops< 11, _type, _type2, dep_ops::use_constfn >
struct | bin_ops< 12, _type, _type2, dep_ops::no_constfn >
struct | bin_ops< 12, _type, _type2, dep_ops::use_constfn >
struct | bin_ops< 13, _type, _type2, dep_ops::no_constfn >
struct | bin_ops< 13, _type, _type2, dep_ops::use_constfn >
struct | bin_ops< 14, _type, _type2, dep_ops::no_constfn >
struct | bin_ops< 14, _type, _type2, dep_ops::use_constfn >
struct | bin_ops< 2, _type, _type2, dep_ops::no_constfn >
struct | bin_ops< 2, _type, _type2, dep_ops::use_constfn >
struct | bin_ops< 3, _type, _type2, dep_ops::no_constfn >
struct | bin_ops< 3, _type, _type2, dep_ops::use_constfn >
struct | bin_ops< 4, _type, _type2, dep_ops::no_constfn >
struct | bin_ops< 4, _type, _type2, dep_ops::use_constfn >
struct | bin_ops< 5, _type, _type2, dep_ops::no_constfn >
struct | bin_ops< 5, _type, _type2, dep_ops::use_constfn >
struct | bin_ops< 6, _type, _type2, dep_ops::no_constfn >
struct | bin_ops< 6, _type, _type2, dep_ops::use_constfn >
struct | bin_ops< 7, _type, _type2, dep_ops::no_constfn >
struct | bin_ops< 7, _type, _type2, dep_ops::use_constfn >
struct | bin_ops< 8, _type, _type2, dep_ops::no_constfn >
struct | bin_ops< 8, _type, _type2, dep_ops::use_constfn >
struct | bin_ops< 9, _type, _type2, dep_ops::no_constfn >
struct | bin_ops< 9, _type, _type2, dep_ops::use_constfn >
struct | bin_ops< ops_bin_id(0 , 0), _type, _type2, dep_ops::no_constfn >
struct | bin_ops< ops_bin_id(0 , 0), _type, _type2, dep_ops::use_constfn >
struct | bin_ops< ops_bin_id(0 , 1), _type, _type2, dep_ops::no_constfn >
struct | bin_ops< ops_bin_id(0 , 1), _type, _type2, dep_ops::use_constfn >
struct | bin_ops< ops_bin_id(0 , 2), _type, _type2, dep_ops::no_constfn >
struct | bin_ops< ops_bin_id(0 , 2), _type, _type2, dep_ops::use_constfn >
struct | bin_ops< ops_bin_id(0 , 3), _type, _type2, dep_ops::no_constfn >
struct | bin_ops< ops_bin_id(0 , 3), _type, _type2, dep_ops::use_constfn >
struct | bin_ops< ops_bin_id(1 , 0), _type, _type2, dep_ops::no_constfn >
struct | bin_ops< ops_bin_id(1 , 0), _type, _type2, dep_ops::use_constfn >
struct | bin_ops< ops_bin_id(1 , 1), _type, _type2, dep_ops::no_constfn >
struct | bin_ops< ops_bin_id(1 , 1), _type, _type2, dep_ops::use_constfn >
struct | bin_ops< ops_bin_id(1 , 4), _type, _type2, dep_ops::no_constfn >
struct | bin_ops< ops_bin_id(1 , 4), _type, _type2, dep_ops::use_constfn >
struct | bin_ops< ops_bin_id(1 , 5), _type, _type2, dep_ops::no_constfn >
struct | bin_ops< ops_bin_id(1 , 5), _type, _type2, dep_ops::use_constfn >
struct | bin_ops< ops_bin_id(2 , 0), _type, _type2, dep_ops::no_constfn >
struct | bin_ops< ops_bin_id(2 , 0), _type, _type2, dep_ops::use_constfn >
struct | bin_ops< ops_bin_id(2 , 1), _type, _type2, dep_ops::no_constfn >
struct | bin_ops< ops_bin_id(2 , 1), _type, _type2, dep_ops::use_constfn >
struct | bin_ops< ops_bin_id(2 , 2), _type, _type2, dep_ops::no_constfn >
struct | bin_ops< ops_bin_id(2 , 2), _type, _type2, dep_ops::use_constfn >
struct | bin_ops< ops_bin_id(2 , 3), _type, _type2, dep_ops::no_constfn >
struct | bin_ops< ops_bin_id(2 , 3), _type, _type2, dep_ops::use_constfn >
struct | bin_ops< ops_bin_id(3 , 0), _type, _type2, dep_ops::no_constfn >
struct | bin_ops< ops_bin_id(3 , 0), _type, _type2, dep_ops::use_constfn >
struct | bin_ops< ops_bin_id(3 , 1), _type, _type2, dep_ops::no_constfn >
struct | bin_ops< ops_bin_id(3 , 1), _type, _type2, dep_ops::use_constfn >
struct | bin_ops< ops_bin_id(3 , 4), _type, _type2, dep_ops::no_constfn >
struct | bin_ops< ops_bin_id(3 , 4), _type, _type2, dep_ops::use_constfn >
struct | bin_ops< ops_bin_id(3 , 5), _type, _type2, dep_ops::no_constfn >
struct | bin_ops< ops_bin_id(3 , 5), _type, _type2, dep_ops::use_constfn >
struct | bin_ops< ops_bin_id(4 , 0), _type, _type2, dep_ops::no_constfn >
struct | bin_ops< ops_bin_id(4 , 0), _type, _type2, dep_ops::use_constfn >
struct | bin_ops< ops_bin_id(4 , 1), _type, _type2, dep_ops::no_constfn >
struct | bin_ops< ops_bin_id(4 , 1), _type, _type2, dep_ops::use_constfn >
struct | bin_ops< ops_bin_id(4 , 4), _type, _type2, dep_ops::no_constfn >
struct | bin_ops< ops_bin_id(4 , 4), _type, _type2, dep_ops::use_constfn >
struct | bin_ops< ops_bin_id(4 , 5), _type, _type2, dep_ops::no_constfn >
struct | bin_ops< ops_bin_id(4 , 5), _type, _type2, dep_ops::use_constfn >
struct | bin_ops< ops_bin_id(5 , 0), _type, _type2, dep_ops::no_constfn >
struct | bin_ops< ops_bin_id(5 , 0), _type, _type2, dep_ops::use_constfn >
struct | bin_ops< ops_bin_id(5 , 1), _type, _type2, dep_ops::no_constfn >
struct | bin_ops< ops_bin_id(5 , 1), _type, _type2, dep_ops::use_constfn >
struct | bin_ops< ops_bin_id(5 , 2), _type, _type2, dep_ops::no_constfn >
struct | bin_ops< ops_bin_id(5 , 2), _type, _type2, dep_ops::use_constfn >
struct | bin_ops< ops_bin_id(5 , 3), _type, _type2, dep_ops::no_constfn >
struct | bin_ops< ops_bin_id(5 , 3), _type, _type2, dep_ops::use_constfn >
struct | bin_ops< ops_bin_id(6 , 0), _type, _type2, dep_ops::no_constfn >
struct | bin_ops< ops_bin_id(6 , 0), _type, _type2, dep_ops::use_constfn >
struct | bin_ops< ops_bin_id(6 , 1), _type, _type2, dep_ops::no_constfn >
struct | bin_ops< ops_bin_id(6 , 1), _type, _type2, dep_ops::use_constfn >
struct | bin_ops< ops_bin_id(6 , 2), _type, _type2, dep_ops::no_constfn >
struct | bin_ops< ops_bin_id(6 , 2), _type, _type2, dep_ops::use_constfn >
struct | bin_ops< ops_bin_id(6 , 3), _type, _type2, dep_ops::no_constfn >
struct | bin_ops< ops_bin_id(6 , 3), _type, _type2, dep_ops::use_constfn >
struct | bin_ops< ops_bin_id(7 , 0), _type, _type2, dep_ops::no_constfn >
struct | bin_ops< ops_bin_id(7 , 0), _type, _type2, dep_ops::use_constfn >
struct | bin_ops< ops_bin_id(7 , 1), _type, _type2, dep_ops::no_constfn >
struct | bin_ops< ops_bin_id(7 , 1), _type, _type2, dep_ops::use_constfn >
struct | bin_ops< ops_bin_id(7 , 2), _type, _type2, dep_ops::no_constfn >
struct | bin_ops< ops_bin_id(7 , 2), _type, _type2, dep_ops::use_constfn >
struct | bin_ops< ops_bin_id(7 , 3), _type, _type2, dep_ops::no_constfn >
struct | bin_ops< ops_bin_id(7 , 3), _type, _type2, dep_ops::use_constfn >
struct | bin_ops< ops_bin_id(8 , 0), _type, _type2, dep_ops::no_constfn >
struct | bin_ops< ops_bin_id(8 , 0), _type, _type2, dep_ops::use_constfn >
struct | bin_ops< ops_bin_id(8 , 1), _type, _type2, dep_ops::no_constfn >
struct | bin_ops< ops_bin_id(8 , 1), _type, _type2, dep_ops::use_constfn >
struct | bin_ops< ops_bin_id(9 , 0), _type, _type2, dep_ops::no_constfn >
struct | bin_ops< ops_bin_id(9 , 0), _type, _type2, dep_ops::use_constfn >
struct | bin_ops< ops_bin_id(9 , 1), _type, _type2, dep_ops::no_constfn >
struct | bin_ops< ops_bin_id(9 , 1), _type, _type2, dep_ops::use_constfn >
struct | bit_order_tester
union | byte_order_tester
struct | combined_hash_tuple
struct | combined_hash_tuple< _type, index_sequence< _vSeq... > >
struct | detector
struct | detector< _tDefault, void_t< _gOp< _tParams... > >, _gOp, _tParams... >
struct | ebases
struct | general_cast_helper
struct | general_cast_helper< _tFrom, _tTo, false >
struct | general_cast_helper< _type, _type, false >
struct | general_cast_helper< _type, _type, true >
struct | general_cast_type_helper
struct | general_polymorphic_cast_helper
struct | general_polymorphic_cast_helper< _tFrom, _tTo, false >
struct | has_nonempty_virtual_base
struct | have_common_nonempty_virtual_base
struct | is_callable_case1
struct | is_callable_case2
struct | is_callable_case3
struct | is_callable_case4
struct | is_callable_target
struct | is_referenceable_function
struct | is_referenceable_function< _tRes(_tParams...)>
struct | is_referenceable_function< _tRes(_tParams...,...)>
struct | is_string_like
struct | is_string_like< _type, enable_if_t< is_object< decay_t< decltype(std::declval< _type >()[0])> >::value > >
struct | iterator_operators
struct | iterator_operators< _tIter, _tTraits, std::bidirectional_iterator_tag >
struct | iterator_operators< _tIter, _tTraits, std::forward_iterator_tag >
struct | iterator_operators< _tIter, _tTraits, std::input_iterator_tag >
struct | iterator_operators< _tIter, _tTraits, std::output_iterator_tag >
struct | iterator_operators< _tIter, _tTraits, std::random_access_iterator_tag >
struct | member_target_type_impl
struct | member_target_type_impl< _type _tClass::* >
struct | narrow_test
struct | op_idt
struct | ops_seq
struct | ops_seq< _type, _type2, _tOpt, index_sequence< _vSeq... > >
class | optional_base
class | optional_base< _type, true >
struct | pack_obj_impl
struct | pack_obj_impl< std::shared_ptr< _type > >
struct | pack_obj_impl< std::unique_ptr< _type, _tDeleter > >
struct | state_guard_impl
struct | state_guard_traits
struct | state_guard_traits< _type, _tToken, true >
struct | ston_dispatcher
struct | ston_dispatcher< std::string, double >
struct | ston_dispatcher< std::string, float >
struct | ston_dispatcher< std::string, int >
struct | ston_dispatcher< std::string, long >
struct | ston_dispatcher< std::string, long double >
struct | ston_dispatcher< std::string, long long >
struct | ston_dispatcher< std::string, unsigned long >
struct | ston_dispatcher< std::string, unsigned long long >
struct | str_algo
struct | str_algo< index_sequence< _vIdx, _vSeq... > >
struct | str_algo< index_sequence<> >
struct | str_algos
struct | str_algos< 0 >
struct | str_algos< 1 >
struct | tcompare
struct | tcompare< _tWrappedKey, _fComp, true >
struct | thunk_call_proxy
struct | thunk_caller
struct | transit_traits
struct | tuple_element_convertible
struct | tuple_element_convertible< _type1, _type2, index_sequence<> >
struct | tuple_element_convertible< std::tuple< _types1... >, std::tuple< _types2... >, index_sequence< _vHead, _vSeq... > >
class | wrapped_key

## 类型定义

template<class _type >
using | range_size_t = decltype(size(std::declval< _type >()))
template<class _type >
using | has_range_size = is_detected_convertible< size_t, range_size_t, _type >
template<class _type >
using | mapped_type_t = typename _type::mapped_type
template<class _type , typename = void>
using | mem_is_transparent_t = typename _type::is_transparent
template<typename _type >
using | is_copy_constructible_class = and_< is_copy_constructible< _type >, is_class_type< _type >>
template<class _tAlloc , typename _type >
using | rebind_t = typename _tAlloc::template rebind< _type >::other
template<typename _type >
using | check_allocator = and_< cond_t< has_mem_value_type< _type >, is_detected< rebind_t, _type, vdefer< details::mem_value_type_t, _type >>>, is_copy_constructible_class< _type >>
template<typename _type >
using | nested_allocator_t = typename _type::allocator_type
template<typename _type >
using | nptr_eq1 = bool_< _type()==_type()>
template<typename _type >
using | nptr_eq2 = bool_< _type(nullptr)==nullptr >
template<class _tSize , class _tIndex >
using | index_conv = size_t_< _tSize::value==_tIndex::value?tuple_not_found:_tIndex::value >
template<typename _type , typename _type2 >
using | subscription_t = decltype(std::declval< _type >()[std::declval< _type2 >()])
template<typename _type , typename _type2 >
using | equality_operator_t = decltype(std::declval< _type >()==std::declval< _type2 >())
template<typename _type >
using | mem_value_t = decltype(std::declval< _type >().value)
template<typename _type >
using | mem_value_type_t = typename _type::value_type
template<typename _type , typename _type2 >
using | swap_volatile_avail = bool_< is_volatile< remove_reference_t< _type >>::value!=is_volatile< remove_reference_t< _type2 >>::value >
template<typename _type , typename _type2 >
using | swap_volatile_noexcept = swap_volatile_avail< _type, _type2 >
template<typename _type >
using | addressof_mem_t = decltype(std::declval< const _type & >().operator&())
template<typename _type >
using | addressof_free_t = decltype(operator&(std::declval< const _type & >()))
template<typename _type , typename... _tParams>
using | mem_new_t = decltype(_type::operator new(std::declval< _tParams >()...))
template<typename _type , typename... _tParams>
using | mem_delete_t = decltype(_type::operator delete(std::declval< _tParams >()...))
template<typename _type = void>
using | op_idt_t = _t< op_idt< _type >>

## 函数

template<typename _tDst , typename _tSrc >
auto | test_narrow (_tSrc v) -> decltype(narrow_test< _tDst >
| get ())
template<typename >
true_ | test_narrow (...)
template<typename _tDst , typename _tSrc >
_tDst | not_widen_cast (_tSrc v, true_)
template<typename _tDst , typename _tSrc >
_tDst | not_widen_cast (_tSrc v, false_)
template<typename _tRange >
auto | range_size (const _tRange &c, true_) -> decltype(size(c))
template<typename _tRange >
auto | range_size (const _tRange &c, false_) -> decltype(std::distance(begin(c), end(c)))
template<class _tCon , typename _tKey >
bool | exists (const _tCon &con, const _tKey &key, decltype(std::declval< _tCon >().count())=1U)
template<class _tCon , typename _tKey >
bool | exists (const _tCon &con, const _tKey &key,...)
template<class _tAssocCon , typename _tKey , typename _tParam >
std::pair< typename _tAssocCon::iterator, bool > | insert_or_assign (std::pair< typename _tAssocCon::iterator, bool > pr, _tAssocCon &con, _tKey &&k, _tParam &&arg)
template<typename _fCallable , typename _type , typename... _tParams>
auto | invoke_impl (_fCallable &&f, _type &&obj, _tParams &&...args) -> enable_if_t< is_callable_case1< decay_t< _fCallable >, _type >::value, decltype((std::forward< decltype(obj)>(obj).*f)(std::forward< decltype(args)>(args)...))>
template<typename _fCallable , typename _type >
auto | invoke_impl (_fCallable &&f, _type &&obj) -> enable_if_t< is_callable_case3< decay_t< _fCallable >, _type >::value, decltype(std::forward< decltype(obj)>(obj).*f)>
template<typename _func , typename... _tParams>
auto | invoke_impl (_func &&f, _tParams &&...args) -> enable_if_t<!is_member_pointer< decay_t< _func >>::value, decltype(std::forward< decltype(f)>(f)(std::forward< decltype(args)>(args)...))>
template<typename _fCallable , typename... _tParams>
pseudo_output | invoke_nonvoid_impl (true_, _fCallable &&f, _tParams &&...args)
template<typename _fCallable , typename... _tParams>
result_of_t< _fCallable &&(_tParams &&...)> | invoke_nonvoid_impl (false_, _fCallable &&f, _tParams &&...args)
template<typename _type , typename _fCallable , typename... _tParams>
_type | call_for_value (true_, _type &&val, _fCallable &&f, _tParams &&...args)
template<typename _type , typename _fCallable , typename... _tParams>
auto | call_for_value (false_, _type &&, _fCallable &&f, _tParams &&...args) -> result_of_t< _fCallable &&(_tParams &&...)>
template<typename _type , typename... _tParams>
_type * | try_new_impl (void *, _tParams &&...)
template<typename _type , typename... _tParams>
auto | try_new_impl (nullptr_t, _tParams &&...args) -> decltype(new _type(std::forward< decltype(args)>(args)...))
template<typename _type , class _tAlloc , typename... _tParams>
_type * | try_create_with_allocator_impl (void *, _tAlloc &, _tParams &&...)
template<typename _type , class _tAlloc , typename... _tParams>
auto | try_create_with_allocator_impl (nullptr_t, _tAlloc &a, _tParams &&...args) -> decltype(ystdex::create_with_allocator< _type >(a, std::forward< decltype(args)>(args)...))
template<typename _tFwd1 , typename _tFwd2 , typename _fPred >
bool | ends_with_iter_dispatch (_tFwd1 b, _tFwd1 e, _tFwd2 bt, _tFwd2 et, _fPred comp, std::bidirectional_iterator_tag)
template<typename _type , class _tTuple , size_t... _vIdx>
_type | make_from_tuple_impl (_tTuple &&t, index_sequence< _vIdx... >)
template<typename _tSeqCon , typename _type >
void | erase_all_in_seq (_tSeqCon &con, _type &&value, true_)
template<typename _tSeqCon , typename _type >
void | erase_all_in_seq (_tSeqCon &con, const _type &value, false_)
template<typename _tSeqCon , typename _fPred >
void | erase_all_if_in_seq (_tSeqCon &con, _fPred pred, true_)
template<typename _tSeqCon , typename _fPred >
void | erase_all_if_in_seq (_tSeqCon &con, _fPred pred, false_)
template<typename _tCon , typename _type >
void | erase_all (_tCon &con, decltype(cbegin(con)) first, decltype(cend(con)) last, const _type &value, true_)
template<typename _tCon , typename _type >
void | erase_all (_tCon &con, const _type &value, true_)
template<typename _tCon , typename _type >
void | erase_all (_tCon &con, decltype(begin(con)) first, decltype(end(con)) last, const _type &value, false_)
template<typename _tCon , typename _type >
void | erase_all (_tCon &con, const _type &value, false_)
template<typename _tCon , typename _fPred >
void | erase_all_if (_tCon &con, decltype(cbegin(con)) first, decltype(cend(con)) last, _fPred pred, true_)
template<typename _tCon , typename _fPred >
void | erase_all_if (_tCon &con, _fPred pred, true_)
template<typename _tCon , typename _fPred >
void | erase_all_if (_tCon &con, decltype(begin(con)) first, decltype(end(con)) last, _fPred pred, false_)
template<typename _tCon , typename _fPred >
void | erase_all_if (_tCon &con, _fPred pred, false_)
template<class _type , typename... _tParams>
using | mem_remove_t = decltype(std::declval< _type >().remove(std::declval< _tParams >()...))
template<typename _type , typename... _tParams>
using | has_mem_remove = is_detected< mem_remove_t, _type, _tParams... >
template<class _type , typename... _tParams>
using | mem_remove_if_t = decltype(std::declval< _type >().remove_if(std::declval< _tParams >()...))
template<typename _type , typename... _tParams>
using | has_mem_remove_if = is_detected< mem_remove_if_t, _type, _tParams... >
template<class _type >
using | key_type_t = typename _type::key_type
template<typename _type >
using | has_mem_key_type = is_detected< key_type_t, _type >
template<typename _tSeqCon , typename _type >
void | erase_remove (_tSeqCon &con, decltype(begin(con)) first, decltype(end(con)) last, const _type &value)
template<typename _tSeqCon , typename _fPred >
void | erase_remove_if (_tSeqCon &con, decltype(begin(con)) first, decltype(end(con)) last, _fPred pred)
template<size_t _vID, size_t... _vSeq>
using | ops_bin_id_seq = index_sequence< ops_bin_id(_vID, _vSeq)... >
template<class _type , typename _type2 , class _tOpt , template< typename... > class... _gOps>
using | flat_ops = vseq::defer_t< ebases, vseq::fold_t< vseq::_a< vseq::concat_t >, empty_base<>, empty_base< vseq::defer_t< empty_base, _gOps< _type, _type2, _tOpt >>... >>>
size_t | ops_bin_id (size_t id, size_t off)

## 详细描述

自从
  build 687
  build 739
  build 546
  build 488
  build 677
  build 792
  build 695
  build 447
  build 612
  build 606
  build 679
  build 576
  build 595
  build 591
  build 685
  build 450
  build 542

注解
  使用 ADL get 。

参见
  WG21 N4606 20.5.2.5[tuple.apply]/2 。
  WG21 P0209R2 。

自从
  build 735
  build 649

参见
  WG21 N4502 。

自从
  build 704

## 类型定义说明

template<typename _type >

using ystdex::details::addressof_free_t = typedef decltype(operator&(std::declval<const _type&>()))

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

template<typename _type >

using ystdex::details::addressof_mem_t = typedef decltype(std::declval<const _type&>().operator&())

自从
  build 649

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

template<typename _type >

using ystdex::details::check_allocator = typedef and_<cond_t<has_mem_value_type<_type>, is_detected<rebind_t, _type, vdefer<details::mem_value_type_t, _type>>>, is_copy_constructible_class<_type>>

自从
  build 650

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

template<typename _type , typename _type2 >

using ystdex::details::equality_operator_t = typedef decltype(std::declval<_type>() == std::declval<_type2>())

自从
  build 649

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

template<class _type , typename _type2 , class _tOpt , template< typename... > class... _gOps>

using ystdex::details::flat_ops = typedef vseq::defer_t<ebases, vseq::fold_t<vseq::_a<vseq::concat_t>, empty_base<>, empty_base<vseq::defer_t<empty_base, _gOps<_type, _type2, _tOpt>>...>>>

在文件 operators.hpp 第 222 行定义.

template<typename _type >

using ystdex::details::has_mem_key_type = typedef is_detected<key_type_t, _type>

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

template<typename _type , typename... _tParams>

using ystdex::details::has_mem_remove = typedef is_detected<mem_remove_t, _type, _tParams...>

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

template<typename _type , typename... _tParams>

using ystdex::details::has_mem_remove_if = typedef is_detected<mem_remove_if_t, _type, _tParams...>

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

template<class _type >

using ystdex::details::has_range_size = typedef is_detected_convertible<size_t, range_size_t, _type>

自从
  build 663

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

template<class _tSize , class _tIndex >

using ystdex::details::index_conv = typedef size_t_<_tSize::value == _tIndex::value ? tuple_not_found : _tIndex::value>

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

template<typename _type >

using ystdex::details::is_copy_constructible_class = typedef and_<is_copy_constructible<_type>, is_class_type<_type>>

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

template<class _type >

using ystdex::details::key_type_t = typedef typename _type::key_type

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

template<class _type >

using ystdex::details::mapped_type_t = typedef typename _type::mapped_type

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

template<typename _type , typename... _tParams>

using ystdex::details::mem_delete_t = typedef decltype(_type::operator delete(std::declval<_tParams>()...))

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

template<class _type , typename = void>

using ystdex::details::mem_is_transparent_t = typedef typename _type::is_transparent

自从
  build 680

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

template<typename _type , typename... _tParams>

using ystdex::details::mem_new_t = typedef decltype(_type::operator new(std::declval<_tParams>()...))

自从
  build 746

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

template<class _type , typename... _tParams>

using ystdex::details::mem_remove_if_t = typedef decltype(std::declval<_type>().remove_if(std::declval<_tParams>()...))

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

template<class _type , typename... _tParams>

using ystdex::details::mem_remove_t = typedef decltype(std::declval<_type>().remove(std::declval<_tParams>()...))

自从
  build 663

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

template<typename _type >

using ystdex::details::mem_value_t = typedef decltype(std::declval<_type>().value)

自从
  build 649

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

template<typename _type >

using ystdex::details::mem_value_type_t = typedef typename _type::value_type

自从
  build 650

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

template<typename _type >

using ystdex::details::nested_allocator_t = typedef typename _type::allocator_type

自从
  build 650

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

template<typename _type >

using ystdex::details::nptr_eq1 = typedef bool_<_type() == _type()>

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

template<typename _type >

using ystdex::details::nptr_eq2 = typedef bool_<_type(nullptr) == nullptr>

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

template<typename _type = void>

using ystdex::details::op_idt_t = typedef _t<op_idt<_type>>

在文件 operators.hpp 第 93 行定义.

template<size_t _vID, size_t... _vSeq>

using ystdex::details::ops_bin_id_seq = typedef index_sequence<ops_bin_id(_vID, _vSeq)...>

在文件 operators.hpp 第 186 行定义.

template<class _type >

using ystdex::details::range_size_t = typedef decltype(size(std::declval<_type>()))

自从
  build 663

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

template<class _tAlloc , typename _type >

using ystdex::details::rebind_t = typedef typename _tAlloc::template rebind<_type>::other

自从
  build 651

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

template<typename _type , typename _type2 >

using ystdex::details::subscription_t = typedef decltype(std::declval<_type>()[std::declval<_type2>()])

自从
  build 649

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

template<typename _type , typename _type2 >

using ystdex::details::swap_volatile_avail = typedef bool_<is_volatile<remove_reference_t<_type>>::value != is_volatile<remove_reference_t<_type2>>::value>

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

template<typename _type , typename _type2 >

using ystdex::details::swap_volatile_noexcept = typedef swap_volatile_avail<_type, _type2>

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

## 函数说明

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

_type ystdex::details::call_for_value | ( | true_ | ,
|  | _type && | val,
|  | _fCallable && | f,
|  | _tParams &&... | args
| ) |  |

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

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

参考自 ystdex::call_for_value().

函数调用图:

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

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

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

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

函数调用图:
template<typename _tFwd1 , typename _tFwd2 , typename _fPred >

bool ystdex::details::ends_with_iter_dispatch | ( | _tFwd1 | b,
|  | _tFwd1 | e,
|  | _tFwd2 | bt,
|  | _tFwd2 | et,
|  | _fPred | comp,
|  | std::bidirectional_iterator_tag |
| ) |  |

待办事项:
  支持 std::forward_iterator_tag 重载。

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

参考 YSLib::i.

参考自 ystdex::ends_with().

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

void ystdex::details::erase_all | ( | _tCon & | con,
|  | decltype(cbegin(con)) | first,
|  | decltype(cend(con)) | last,
|  | const _type & | value,
|  | true_ |
| ) |  |

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

参考自 erase_all() , 以及 ystdex::erase_all().

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

void ystdex::details::erase_all | ( | _tCon & | con,
|  | const _type & | value,
|  | true_ |
| ) |  |

inline

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

参考 ystdex::cpp2014::cbegin(), ystdex::cpp2014::cend() , 以及 erase_all().

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

void ystdex::details::erase_all | ( | _tCon & | con,
|  | decltype(begin(con)) | first,
|  | decltype(end(con)) | last,
|  | const _type & | value,
|  | false_ |
| ) |  |

inline

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

参考 erase_remove().

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

void ystdex::details::erase_all | ( | _tCon & | con,
|  | const _type & | value,
|  | false_ |
| ) |  |

inline

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

参考 erase_all_in_seq().

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

void ystdex::details::erase_all_if | ( | _tCon & | con,
|  | decltype(cbegin(con)) | first,
|  | decltype(cend(con)) | last,
|  | _fPred | pred,
|  | true_ |
| ) |  |

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

参考自 erase_all_if() , 以及 ystdex::erase_all_if().

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

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

inline

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

参考 ystdex::cpp2014::cbegin(), ystdex::cpp2014::cend() , 以及 erase_all_if().

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

void ystdex::details::erase_all_if | ( | _tCon & | con,
|  | decltype(begin(con)) | first,
|  | decltype(end(con)) | last,
|  | _fPred | pred,
|  | false_ |
| ) |  |

inline

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

参考 erase_remove_if().

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

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

inline

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

参考 erase_all_if_in_seq().

函数调用图:
template<typename _tSeqCon , typename _fPred >

void ystdex::details::erase_all_if_in_seq | ( | _tSeqCon & | con,
|  | _fPred | pred,
|  | true_ |
| ) |  |

inline

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

参考自 erase_all_if().

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

void ystdex::details::erase_all_if_in_seq | ( | _tSeqCon & | con,
|  | _fPred | pred,
|  | false_ |
| ) |  |

inline

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

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

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

void ystdex::details::erase_all_in_seq | ( | _tSeqCon & | con,
|  | _type && | value,
|  | true_ |
| ) |  |

inline

自从
  build 730

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

参考 yforward.

参考自 erase_all().

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

void ystdex::details::erase_all_in_seq | ( | _tSeqCon & | con,
|  | const _type & | value,
|  | false_ |
| ) |  |

inline

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

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

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

void ystdex::details::erase_remove | ( | _tSeqCon & | con,
|  | decltype(begin(con)) | first,
|  | decltype(end(con)) | last,
|  | const _type & | value
| ) |  |

inline

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

参考自 erase_all() , 以及 erase_all_in_seq().

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

void ystdex::details::erase_remove_if | ( | _tSeqCon & | con,
|  | decltype(begin(con)) | first,
|  | decltype(end(con)) | last,
|  | _fPred | pred
| ) |  |

inline

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

参考自 erase_all_if() , 以及 erase_all_if_in_seq().

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

bool ystdex::details::exists | ( | const _tCon & | con,
|  | const _tKey & | key,
|  | decltype(std::declval< _tCon >().count()) | = `1U`
| ) |  |

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

参考自 ystdex::exists().

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

bool ystdex::details::exists | ( | const _tCon & | con,
|  | const _tKey & | key,
|  |  | ...
| ) |  |

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

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

函数调用图:

ystdex::details::get | ( |  | ) |

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

参考自 YSLib::PointerHolder< _type, _tTraits >::Create(), make_from_tuple_impl() , 以及 ystdex::any::unchecked_get().

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

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

自从
  build 681

注解
  使用 ADL extract_mapped 。

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

参考 ystdex::emplace_hint_in_place() , 以及 yforward.

参考自 ystdex::insert_or_assign() , 以及 ystdex::insert_or_assign_hint().

函数调用图:

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

auto ystdex::details::invoke_impl | ( | _fCallable && | f,
|  | _type && | obj,
|  | _tParams &&... | args
| ) |  | -> enable_if_t<is_callable_case1<decay_t<_fCallable>, _type>::value, decltype((std::forward<decltype( obj )>( obj ).*f)(std::forward<decltype( args )>( args )...))>

inline

自从
  build 763

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

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

参考自 ystdex::invoke().

函数调用图:

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

auto ystdex::details::invoke_impl | ( | _fCallable && | f,
|  | _type && | obj
| ) |  | -> enable_if_t<is_callable_case3<decay_t<_fCallable>, _type>::value, decltype(std::forward<decltype( obj )>( obj ).*f)>

inline

自从
  build 763

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

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

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

auto ystdex::details::invoke_impl | ( | _func && | f,
|  | _tParams &&... | args
| ) |  | -> enable_if_t<!is_member_pointer<decay_t<_func>>::value, decltype(std::forward<decltype( f )>( f )(std::forward<decltype( args )>( args )...))>

inline

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

参考 CHRLib::args , 以及 yforward.

template<typename _fCallable , typename... _tParams>

pseudo_output ystdex::details::invoke_nonvoid_impl | ( | true_ | ,
|  | _fCallable && | f,
|  | _tParams &&... | args
| ) |  |

inline

自从
  build 729

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

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

参考自 ystdex::invoke_nonvoid().

函数调用图:

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

result_of_t<_fCallable&&(_tParams&&...)> ystdex::details::invoke_nonvoid_impl | ( | false_ | ,
|  | _fCallable && | f,
|  | _tParams &&... | args
| ) |  |

inline

自从
  build 729

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

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

函数调用图:
template<typename _type , class _tTuple , size_t... _vIdx>

_type ystdex::details::make_from_tuple_impl | ( | _tTuple && | t,
|  | index_sequence< _vIdx... > |
| ) |  |

inline

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

参考 get() , 以及 yforward.

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

_tDst ystdex::details::not_widen_cast | ( | _tSrc | v,
|  | true_ |
| ) |  |

inline

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

参考 ystdex::narrow_cast() , 以及 v.

参考自 ystdex::not_widen_cast().

函数调用图:

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

_tDst ystdex::details::not_widen_cast | ( | _tSrc | v,
|  | false_ |
| ) |  |

inline

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

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

函数调用图:

size_t ystdex::details::ops_bin_id | ( | size_t | id,
|  | size_t | off
| ) |  |

inline

在文件 operators.hpp 第 180 行定义.

template<typename _tRange >

auto ystdex::details::range_size | ( | const _tRange & | c,
|  | true_ |
| ) |  | -> decltype(size(c))

inline

自从
  buld 730

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

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

参考自 main() , 以及 ystdex::range_size().

函数调用图:

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

auto ystdex::details::range_size | ( | const _tRange & | c,
|  | false_ |
| ) |  | -> decltype(std::distance(begin(c), end(c)))

inline

自从
  buld 730

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

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

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

auto ystdex::details::test_narrow | ( | _tSrc | v | ) | -> decltype(narrow_test<_tDst>

inline

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

参考 v.

template<typename >

true_ ystdex::details::test_narrow | ( |  | ... | ) |

inline

自从
  build 730

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

template<typename _type , class _tAlloc , typename... _tParams>

_type* ystdex::details::try_create_with_allocator_impl | ( | void * | ,
|  | _tAlloc & | ,
|  | _tParams && | ...
| ) |  |

自从
  build 746

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

参考 ystdex::throw_invalid_construction().

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

auto ystdex::details::try_create_with_allocator_impl | ( | nullptr_t | ,
|  | _tAlloc & | a,
|  | _tParams &&... | args
| ) |  | -> decltype(ystdex::create_with_allocator<_type>(a, std::forward<decltype( args )>( args )...))

自从
  build 746

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

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

template<typename _type , typename... _tParams>

_type* ystdex::details::try_new_impl | ( | void * | ,
|  | _tParams && | ...
| ) |  |

自从
  build 736

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

参考 ystdex::throw_invalid_construction().

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

auto ystdex::details::try_new_impl | ( | nullptr_t | ,
|  | _tParams &&... | args
| ) |  | -> decltype(new _type(std::forward<decltype( args )>( args )...))

自从
  build 736

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

参考 CHRLib::args , 以及 yforward.