YSTest: Unary Type Traits

YSTest PreAlpha_b900_20201012 The YSLib Test Project

类 | 类型定义
Unary Type Traits
Template Meta Programming » Meta Operations » Metafunctions | Traits » Type Traits Operations

一元类型特征。 更多...

Unary Type Traits 的协作图:

## 类

struct | ystdex::has_overloaded_addressof< _type >
| 判断是否存在合式重载 & 操作符接受指定类型的表达式。 更多...
struct | ystdex::is_allocatable< _type >
| 判断类型是否符合分配器要求的目标类型。 更多...
struct | ystdex::is_allocator< _type >
| 判断类型是分配器。 更多...
struct | ystdex::is_byte_allocator< _type >
| 判断类型是 byte 分配器。 更多...
struct | ystdex::has_nested_allocator< _type >
| 判断类型具有嵌套的成员 allocator_type 指称一个构造器类型。 更多...
struct | ystdex::has_get_allocator< _type >
| 判断类型具有返回分配器的无异常抛出的 get_allocator 成员函数。 更多...
struct | ystdex::integer_width< _tInt >
| 取指定整数类型的位宽度。 更多...
struct | ystdex::is_char_specialized_in_std< _tChar >
| 判断字符类型是否被 ISO C++ 指定提供 `std::char_traits` 的特化。 更多...
struct | ystdex::is_enum_union< typename >
struct | ystdex::paramlist_size< _fCallable >
| 取参数列表大小。 更多...
struct | ystdex::has_mem_is_transparent< _type, _tDummy >
| 判断 _type 是否包含 is_transparent 成员类型。 更多...
struct | ystdex::is_std_reference_wrapper< typename >
| 判断模板参数指定的类型是否为标注库引用包装的实例。 更多...
struct | ystdex::is_sharing< _type >
| 判断指定类型是否为已知的持有共享所有权的对象类型。 更多...
struct | ystdex::is_array_of_unknown_bound< _type >
| 判断是否为未知大小的数组类型。 更多...
struct | ystdex::is_normalizable< _type >
| 判断类型是否可满足正规化要求：在 0 和 1 之间存在值进行表示。 更多...
struct | ystdex::is_reference_wrapper< _type >
| 判断模板参数指定的类型是否为引用包装的实例。 更多...
struct | ystdex::is_string_like< _type >
| 判断指定类型是否为类字符串类型。 更多...
struct | ystdex::cpp2017::is_swappable< _type >
struct | ystdex::cpp2014::is_null_pointer< _type >
struct | ystdex::has_mem_type< _type >
| 判断 _type 是否包含 type 类型成员。 更多...
struct | ystdex::has_nonempty_virtual_base< _type >
| 判断指定类型是否有非空虚基类。 更多...
struct | ystdex::remove_rp< _type >
| 移除指针和引用类型。 更多...
struct | ystdex::remove_rpcv< _type >
| 移除可能被 cv-qualifier 修饰的引用和指针类型。 更多...
struct | YSLib::IsValueHolder< _type >

## 类型定义

template<class _tAlloc >
using | ystdex::alloc_value_t = typename allocator_traits< _tAlloc >::value_type
template<typename _type >
using | ystdex::any_ops::is_in_place_storable = and_< is_aligned_storable< any_storage, _type > >
| 判断类型是否可以作为 any_storage 原地存储。 更多...
template<class _tHolder >
using | ystdex::any_ops::check_holder_t = and_< is_decayed< _tHolder >, is_class< _tHolder >, is_base_of< holder, _tHolder >, is_convertible< _tHolder &, holder & > >
| 检查参数是否可作为持有者类型。 更多...
template<typename _type >
using | ystdex::any::opt_in_place_t = details::any_in_place_t< _type >
| 判断使用分配器构造时是否忽略分配器而在原地存储。 更多...
template<typename _fCallable >
using | ystdex::as_function_type_t = make_function_type_t< return_of_t< _fCallable >, make_parameter_list_t< _fCallable > >
| 取内建函数类型。 更多...
template<typename _type >
using | ystdex::is_swap_movable = and_< is_move_constructible< _type >, is_move_assignable< _type > >

## 详细描述

一元类型特征。

参见
  ISO C++11 20.9.1 [meta.rqmts] 。

自从
  build 306

## 类型定义说明

## ◆ alloc_value_t

template<class _tAlloc >

using ystdex::alloc_value_t = typedef typename allocator_traits<_tAlloc>::value_type

自从
  build 848

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

## ◆ as_function_type_t

template<typename _fCallable >

using ystdex::as_function_type_t = typedef make_function_type_t<return_of_t<_fCallable>, make_parameter_list_t<_fCallable> >

取内建函数类型。

自从
  build 850

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

## ◆ check_holder_t

template<class _tHolder >

using ystdex::any_ops::check_holder_t = typedef and_<is_decayed<_tHolder>, is_class<_tHolder>, is_base_of<holder, _tHolder>, is_convertible<_tHolder&, holder&> >

检查参数是否可作为持有者类型。

注解
  检查必要不充分条件。可用于静态断言排除非持有者类型。

自从
  build 848

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

## ◆ is_in_place_storable

template<typename _type >

using ystdex::any_ops::is_in_place_storable = typedef and_<is_aligned_storable<any_storage, _type> >

判断类型是否可以作为 any_storage 原地存储。

参见
  value_handler

自从
  build 848

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

## ◆ is_swap_movable

template<typename _type >

using ystdex::is_swap_movable = typedef and_<is_move_constructible<_type>, is_move_assignable<_type> >

自从
  build 834

在文件 swap.hpp 第 55 行定义.

## ◆ opt_in_place_t

template<typename _type >

using ystdex::any::opt_in_place_t = details::any_in_place_t<_type>

判断使用分配器构造时是否忽略分配器而在原地存储。

使用 std::allocator_arg_t 构造时，决定是否使用原地存储而非分配器构造的特征； 但不在显式指定处理器的构造和 any&& 参数中被使用。 因为原地存储隐含使用不同的处理器，而使用 any_ops::any_storage 的方式根据不同的处理器可能不同，为使用户代码能满足一致性要求， 这个特征提供为公开接口。 使用分配器存储时，根据直接使用值或持有者的构造，使用以下之一的处理器： any_ops::allocator_value_handler ； any_ops::allocator_holder_handler 。 使用原地存储时，用以下处理器代替： any_ops::value_handler ； any_ops::holder_handler 。 原地存储的处理器的 value_type 在以上情形中分别是被构造的对象类型和持有者类型。

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