|
| constexpr | optional (none_t n=none) noexcept |
| | 默认构造函数
|
| constexpr | optional (T &value) noexcept |
| | 从引用构造
|
| template<typename U, enable_if_t< is_convertible_v< U &, T & >, int > = 0> |
| constexpr | optional (U &value) noexcept |
| | 从可转换引用隐式转换构造
|
| template<typename U, enable_if_t<!is_convertible_v< U &, T & > &&is_constructible_v< T &, U & >, int > = 0> |
| constexpr | optional (U &value) noexcept |
| | 从可转换引用显式转换构造
|
| template<typename U, enable_if_t< convertible_from_optional_ref< U >::value, int > = 0> |
| constexpr | optional (const _MSTL optional< U & > &other) noexcept |
| | 从引用可选值隐式转换复制构造
|
| template<typename U, enable_if_t< !convertible_from_optional_ref< U >::value &&is_constructible_v< T &, U & >, int > = 0> |
| constexpr | optional (const _MSTL optional< U & > &other) noexcept |
| | 从引用可选值显式转换复制构造
|
| MSTL_CONSTEXPR20 optional & | operator= (none_t n) noexcept |
| | 空值赋值运算符
|
| template<typename U = T, enable_if_t< is_assignable_v< T &, U & >, int > = 0> |
| MSTL_CONSTEXPR20 optional & | operator= (U &value) |
| | 从引用赋值
|
| template<typename U, enable_if_t< is_assignable_v< T &, U & >, int > = 0> |
| MSTL_CONSTEXPR20 optional & | operator= (const _MSTL optional< U & > &other) |
| | 从引用可选值赋值
|
| constexpr | optional (const optional &other) noexcept=default |
| | 复制构造函数
|
| MSTL_CONSTEXPR20 optional & | operator= (const optional &other) noexcept=default |
| | 复制赋值运算符
|
| constexpr | optional (optional &&other) noexcept |
| | 移动构造函数
|
| MSTL_CONSTEXPR20 optional & | operator= (optional &&other) noexcept |
| | 移动赋值运算符
|
|
| ~optional () noexcept |
| | 析构函数
|
| template<typename U, enable_if_t< is_convertible_v< U &, T & >, int > = 0> |
| MSTL_CONSTEXPR20 T & | emplace (U &value) noexcept |
| | 隐式转换原位构造引用
|
| template<typename U, enable_if_t<!is_convertible_v< U &, T & > &&is_constructible_v< T &, U & >, int > = 0> |
| MSTL_CONSTEXPR20 T & | emplace (U &value) noexcept |
| | 显式转换原位构造引用
|
|
MSTL_CONSTEXPR20 void | reset () noexcept |
| | 重置引用
|
|
MSTL_NODISCARD constexpr bool | has_value () const noexcept |
| | 检查是否持有引用
|
| constexpr | operator bool () const noexcept |
| | 转换为布尔值
|
| constexpr const T & | value () const & |
| | 获取常量左值引用
|
| constexpr T & | value () & |
| | 获取左值引用
|
| constexpr const T && | value () const && |
| | 获取常量右值引用
|
| constexpr T && | value () && |
| | 获取右值引用
|
| template<typename U> |
| constexpr T | value_or (U &&value) const & |
| | 取出存储的引用的拷贝值
|
| template<typename U> |
| constexpr T | value_or (U &&value) && |
| | 取出存储的引用的移动值
|
| template<typename F, enable_if_t< is_invocable_v< F >, int > = 0> |
| constexpr optional | or_else (F &&f) const & |
| | 常量左值否则操作
|
| template<typename F, enable_if_t< is_invocable_v< F >, int > = 0> |
| constexpr optional | or_else (F &&f) && |
| | 右值否则操作
|
| template<typename F> |
| constexpr decltype(auto) | and_then (F &&f) const & |
| | 常量左值然后操作
|
| template<typename F> |
| constexpr decltype(auto) | and_then (F &&f) & |
| | 左值然后操作
|
| template<typename F> |
| constexpr decltype(auto) | and_then (F &&f) const && |
| | 常量右值然后操作
|
| template<typename F> |
| constexpr decltype(auto) | and_then (F &&f) && |
| | 右值然后操作
|
| template<typename F> |
| constexpr auto | transform (F &&f) const &-> _MSTL optional< remove_cvref_t< decltype(f(*ptr_))> > |
| | 常量左值转换操作
|
| template<typename F> |
| constexpr auto | transform (F &&f) &-> _MSTL optional< remove_cvref_t< decltype(f(*ptr_))> > |
| | 左值转换操作
|
| template<typename F> |
| constexpr auto | transform (F &&f) const &&-> _MSTL optional< remove_cvref_t< decltype(f(*ptr_))> > |
| | 常量右值转换操作
|
| template<typename F> |
| constexpr auto | transform (F &&f) &&-> _MSTL optional< remove_cvref_t< decltype(f(*ptr_))> > |
| | 右值转换操作
|
| constexpr const T * | operator-> () const noexcept |
| | 常量箭头运算符
|
| constexpr T * | operator-> () noexcept |
| | 箭头运算符
|
| constexpr const T & | operator* () const &noexcept |
| | 常量左值解引用运算符
|
| constexpr T & | operator* () &noexcept |
| | 左值解引用运算符
|
| constexpr const T && | operator* () const &&noexcept |
| | 常量右值解引用运算符
|
| constexpr T && | operator* () &&noexcept |
| | 右值解引用运算符
|
| constexpr bool | operator== (const optional &rhs) const noexcept |
| | 等于比较运算符
|
| constexpr bool | operator< (const optional &rhs) const noexcept |
| | 小于比较运算符
|
| constexpr size_t | to_hash () const noexcept |
| | 计算哈希值
|
| MSTL_CONSTEXPR20 void | swap (optional &other) noexcept |
| | 交换两个可选值
|
template<typename T>
class optional< T & >
引用可选值类模板
- 模板参数
-
引用类型的可选值,存储对现有对象的引用。
- 注解
- 对存储引用的optional的任何赋值行为都被定义为更新引用位置,而非更新引用的地址的值,这是optional<T&>两种设计方式中的一种
在文件 optional.hpp 第 808 行定义.