YSTest: ystdex::observer_ptr< _type > 模板类 参考

YSTest PreAlpha_b900_20201012 The YSLib Test Project

Public 类型 | Public 成员函数 | Private 属性 | 友元 | 相关函数 | 所有成员列表
ystdex::observer_ptr< _type > 模板类 参考
YBase Replacement features

观察者指针：无所有权的智能指针。 更多...

`#include <pointer.hpp>`

类 ystdex::observer_ptr< _type > 继承关系图:
[图例]
ystdex::observer_ptr< _type > 的协作图:
[图例]

## Public 类型

using | element_type = _type
using | pointer = add_pointer_t< _type >
using | reference = add_lvalue_reference_t< _type >

## Public 成员函数

| observer_ptr ()=default
| observer_ptr (nullptr_t)
| observer_ptr (pointer p)
template<typename _tOther , typename = enable_if_convertible_t<_tOther*, _type*>>
| observer_ptr (observer_ptr< _tOther > other)
reference | operator* () const
pointer | operator-> () const
| operator bool () const
| operator pointer () const
pointer | get () const
pointer | release ()
void | reset (pointer p={})
void | swap (observer_ptr &other)

## Private 属性

_type * | ptr {}

## 友元

bool | operator== (observer_ptr p, nullptr_t)
bool | is_undereferenceable (const observer_ptr &p)

## 相关函数

(请注意: 这些不是成员函数.)
template<typename _type1 , typename _type2 >
bool | operator== (observer_ptr< _type1 > p1, observer_ptr< _type2 > p2)

## 详细描述

### template<typename _type>
class ystdex::observer_ptr< _type >

观察者指针：无所有权的智能指针。

自从
  build 669

参见
  WG21 N4758 5.2[memory.observer.ptr] 。

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

## 成员类型定义说明

## ◆ element_type

template<typename _type >

using ystdex::observer_ptr< _type >::element_type = _type

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

## ◆ pointer

template<typename _type >

using ystdex::observer_ptr< _type >::pointer = add_pointer_t<_type>

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

## ◆ reference

template<typename _type >

using ystdex::observer_ptr< _type >::reference = add_lvalue_reference_t<_type>

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

## 构造及析构函数说明

## ◆ observer_ptr() [1/4]

template<typename _type >

ystdex::observer_ptr< _type >::observer_ptr | ( |  | ) |

inlinedefault

后置条件
  `get() == nullptr` 。

## ◆ observer_ptr() [2/4]

template<typename _type >

ystdex::observer_ptr< _type >::observer_ptr | ( | nullptr_t |  | ) |

inline

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

## ◆ observer_ptr() [3/4]

template<typename _type >

ystdex::observer_ptr< _type >::observer_ptr | ( | pointer | p | ) |

inlineexplicit

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

## ◆ observer_ptr() [4/4]

template<typename _type >
template<typename _tOther , typename = enable_if_convertible_t<_tOther*, _type*>>

ystdex::observer_ptr< _type >::observer_ptr | ( | observer_ptr< _tOther > | other | ) |

inline

自从
  build 847

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

## 成员函数说明

## ◆ get()

template<typename _type >

pointer ystdex::observer_ptr< _type >::get | ( |  | ) | const

inline

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

引用了 ystdex::observer_ptr< _type >::ptr.

被这些函数引用 ystdex::observer_ptr< _type >::operator*().

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

## ◆ operator bool()

template<typename _type >

ystdex::observer_ptr< _type >::operator bool | ( |  | ) | const

inlineexplicit

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

引用了 ystdex::observer_ptr< _type >::ptr.

## ◆ operator pointer()

template<typename _type >

ystdex::observer_ptr< _type >::operator pointer | ( |  | ) | const

inlineexplicit

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

引用了 ystdex::observer_ptr< _type >::ptr.

## ◆ operator*()

template<typename _type >

reference ystdex::observer_ptr< _type >::operator* | ( |  | ) | const

inline

前置条件
  断言： `get() != nullptr` 。

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

引用了 ystdex::observer_ptr< _type >::get(), ystdex::observer_ptr< _type >::ptr , 以及 yconstraint.

函数调用图:

## ◆ operator->()

template<typename _type >

pointer ystdex::observer_ptr< _type >::operator-> | ( |  | ) | const

inline

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

引用了 ystdex::observer_ptr< _type >::ptr.

## ◆ release()

template<typename _type >

pointer ystdex::observer_ptr< _type >::release | ( |  | ) |

inline

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

引用了 ystdex::observer_ptr< _type >::ptr , 以及 ystdex::observer_ptr< _type >::reset().

函数调用图:

## ◆ reset()

template<typename _type >

void ystdex::observer_ptr< _type >::reset | ( | pointer | p = `{}` | ) |

inline

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

被这些函数引用 ystdex::observer_ptr< _type >::release().

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

## ◆ swap()

template<typename _type >

void ystdex::observer_ptr< _type >::swap | ( | observer_ptr< _type > & | other | ) |

inline

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

引用了 CHRLib::CharSet::other, ystdex::observer_ptr< _type >::ptr , 以及 ystdex::swap().

函数调用图:

## 友元及相关函数文档

## ◆ operator== [1/2]

template<typename _type >

bool operator== | ( | observer_ptr< _type > | p,
|  | nullptr_t |
| ) |  |

friend

自从
  build 675

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

## ◆ operator==() [2/2]

template<typename _type1 , typename _type2 >

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

related

自从
  build 675

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

引用了 YSLib::Drawing::p1 , 以及 YSLib::Drawing::p2.

## 类成员变量说明

## ◆ ptr

template<typename _type >

_type* ystdex::observer_ptr< _type >::ptr {}

private

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

被这些函数引用 ystdex::observer_ptr< _type >::get(), ystdex::observer_ptr< _type >::operator bool(), ystdex::observer_ptr< _type >::operator pointer(), ystdex::observer_ptr< _type >::operator*(), ystdex::observer_ptr< _type >::operator->(), ystdex::observer_ptr< _type >::release() , 以及 ystdex::observer_ptr< _type >::swap().

该类的文档由以下文件生成:

- pointer.hpp