YSTest: swap.hpp 文件参考

YSTest PreAlpha_b900_20201012 The YSLib Test Project

类 | 命名空间 | 宏定义 | 类型定义 | 函数
swap.hpp 文件参考
YBaseLib » YStandardExtend

交换操作。 更多...

`#include "type_pun.hpp"`
swap.hpp 的引用(Include)关系图:
此图展示该文件直接或间接的被哪些文件引用了:

浏览源代码.

## 类

struct | ystdex::cpp2017::is_swappable< _type >
struct | ystdex::cpp2017::is_nothrow_swappable< _type >
struct | ystdex_swap::dep_swap::well_formed_swap< typename, typename, typename >
struct | ystdex_swap::dep_swap::well_formed_swap< _type, _type2, ystdex::void_t< swap_t< _type, _type2 > > >
struct | ystdex_swap::dep_swap::helper< _type, _type2, bool >
struct | ystdex_swap::dep_swap::helper< _type, _type2, true >
struct | ystdex::cpp2017::is_swappable_with< _type, _type2 >
| 判断是否可以调用 `swap` 。 更多...
struct | ystdex::cpp2017::is_swappable< _type >
struct | ystdex::cpp2017::is_nothrow_swappable_with< _type, _type2 >
| 判断是否可以无抛出地调用 `swap` 。 更多...
struct | ystdex::cpp2017::is_nothrow_swappable< _type >

## 命名空间

| ystdex
| `<memory>` 特性测试宏。
| ystdex::cpp2017
| 取约束范围的值。
| ystdex_swap
| ystdex_swap::dep_swap
| 为 ADL 提供重载的命名空间。
| ystdex::details
| ystdex::details::swap_dep_impl
| ystdex::cpp2014
| 使用 new 和指定参数构造指定类型的 std::unique_ptr 对象。

## 宏定义

#define | YB_Impl_Swap_Traits false
#define | YB_Impl_Swap_ns ystdex

## 类型定义

template<typename _type >
using | ystdex::is_swap_movable = and_< is_move_constructible< _type >, is_move_assignable< _type > >
template<typename _type >
using | ystdex::is_nothrow_swap_movable = and_< is_nothrow_move_constructible< _type >, is_nothrow_move_assignable< _type > >
template<typename _tSwapped , typename _type = void>
using | ystdex::enable_if_swap_movable_t = enable_if_t< is_swap_movable< _tSwapped >::value, _type >
template<typename _type , typename _type2 >
using | ystdex_swap::dep_swap::swap_t = decltype(swap(std::declval< _type >(), std::declval< _type2 >()))
template<typename _type , typename _type2 >
using | ystdex::details::swap_volatile_avail = bool_< is_volatile< remove_reference_t< _type > >::value !=is_volatile< remove_reference_t< _type2 > >::value >
template<typename _type , typename _type2 >
using | ystdex::details::swap_volatile_noexcept = swap_volatile_avail< _type, _type2 >

## 函数

template<typename _type >
enable_if_swap_movable_t< _type > | ystdex_swap::swap (_type &a, _type &b)
| 符合 ISO C++20 要求的 std::swap 替代实现。 更多...
template<typename _type , size_t _vN>
enable_if_t< is_swappable< _type >::value > | ystdex_swap::swap (_type(&a)[_vN], _type(&b)[_vN])
template<typename _tFwd1 , typename _tFwd2 >
void | ystdex_swap::iter_swap (_tFwd1 a, _tFwd1 b)
| 符合 ISO C++20 要求的 std::iter_swap 替代实现。 更多...
template<typename _tFwd1 , typename _tFwd2 >
_tFwd2 | ystdex_swap::swap_ranges (_tFwd1 first1, _tFwd1 last1, _tFwd2 first2)
| 符合 ISO C++20 要求的 std::swap_ranges 替代实现。 更多...
nonesuch | ystdex_swap::dep_swap::swap (any_constructible, any_constructible)
template<typename _type , typename = enable_if_t<is_void<_type>::value>>
void | ystdex::details::swap_dep_impl::swap (_type &)
template<typename _type , typename _tDummy >
void | ystdex::details::swap_dep_impl::swap_dep (_type &x, _type &y, _tDummy &&)
template<typename _type >
auto | ystdex::details::swap_dep_impl::swap_dep (_type &x, _type &y, true_) -> decltype(static_cast< void >(swap(x, y)))
template<typename _type >
void | ystdex::swap_dependent (_type &x, _type &y)(is_nothrow_swappable< _type >())
| 支持基于 ystdex_swap::swap 的 ADL 的左值交换。 更多...
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 左值。 更多...
template<typename _type >
auto | ystdex::swap_volatile (volatile _type &x, _type &y) -> decltype(ystdex::swap_volatile(y, x))
template<typename _type , size_t _vN>
void | ystdex::swap_volatile (_type(&x)[_vN], add_volatile_t< _type[_vN]> &y)
template<typename _type >
void | ystdex::swap_underlying (_type &x, _type &y)
| 交换相同标准布局类型可修改左值的存储。 更多...
template<typename _type , typename _type2 , typename = enable_if_t<!details::swap_volatile_avail<_type, _type2>::value>>
void | ystdex::vswap (_type &&x, _type2 &&y)
| 交换可能是 volatile 的左值或右值。 更多...
template<typename _type , typename _type2 >
auto | ystdex::vswap (_type &&x, _type2 &&y) -> enable_if_t< details::swap_volatile_avail< _type, _type2 >::value >
template<typename _type , typename... _tParams>
_type & | ystdex::create_and_swap (_type &obj, _tParams &&... args)
| 创建对象并交换。 更多...
template<typename _type , typename _type2 = _type>
_type & | ystdex::copy_and_swap (_type &obj, const _type2 &new_val)
| 复制对象并交换。 更多...
template<typename _type , typename _type2 = _type>
_type | ystdex::cpp2014::exchange (_type &obj, _type2 &&new_val)
| 交换值并返回旧值。 更多...

## 详细描述

交换操作。

版本
  r633

作者
  FrankHB frank.nosp@m.hb19.nosp@m.89@gm.nosp@m.ail..nosp@m.com

自从
  build 831

创建时间:
  2018-07-12 16:38:36 +0800

修改时间:
  2020-06-25 21:33 +0800

文本编码:
  UTF-8

模块名称:
  YStandardEx::Swap

在文件 swap.hpp 中定义.

## 宏定义说明

## ◆ YB_Impl_Swap_ns

#define YB_Impl_Swap_ns ystdex

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

## ◆ YB_Impl_Swap_Traits

#define YB_Impl_Swap_Traits false

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