MSTL 1.4.0
A Modern C++ Library with extended functionality, web components, and utility libraries
载入中...
搜索中...
未找到
optional< T & > 模板类 参考

引用可选值类模板 更多...

#include <optional.hpp>

类 optional< T & > 继承关系图:
[图例]

Public 类型

using value_type = T&
 值类型
using reference = T&
 引用类型
using const_reference = const T&
 常量引用类型
using pointer = T*
 指针类型
using const_pointer = const T*
 常量指针类型

Public 成员函数

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 optionaloperator= (none_t n) noexcept
 空值赋值运算符
template<typename U = T, enable_if_t< is_assignable_v< T &, U & >, int > = 0>
MSTL_CONSTEXPR20 optionaloperator= (U &value)
 从引用赋值
template<typename U, enable_if_t< is_assignable_v< T &, U & >, int > = 0>
MSTL_CONSTEXPR20 optionaloperator= (const _MSTL optional< U & > &other)
 从引用可选值赋值
constexpr optional (const optional &other) noexcept=default
 复制构造函数
MSTL_CONSTEXPR20 optionaloperator= (const optional &other) noexcept=default
 复制赋值运算符
constexpr optional (optional &&other) noexcept
 移动构造函数
MSTL_CONSTEXPR20 optionaloperator= (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 & >

引用可选值类模板

模板参数
T存储的引用类型

引用类型的可选值,存储对现有对象的引用。

注解
对存储引用的optional的任何赋值行为都被定义为更新引用位置,而非更新引用的地址的值,这是optional<T&>两种设计方式中的一种

在文件 optional.hpp808 行定义.

构造及析构函数说明

◆ optional() [1/8]

template<typename T>
optional< T & >::optional ( none_t n = none)
inlineconstexprnoexcept

默认构造函数

参数
n空值标签

在文件 optional.hpp831 行定义.

引用了 none.

被这些函数引用 operator<(), operator=(), operator=(), operator=(), operator=(), operator=(), operator==(), optional(), optional(), optional(), or_else(), or_else(), swap(), transform(), transform(), transform() , 以及 transform().

◆ optional() [2/8]

template<typename T>
optional< T & >::optional ( T & value)
inlineconstexprnoexcept

从引用构造

参数
value引用值

在文件 optional.hpp837 行定义.

引用了 _MSTL , 以及 value().

◆ optional() [3/8]

template<typename T>
template<typename U, enable_if_t< is_convertible_v< U &, T & >, int > = 0>
optional< T & >::optional ( U & value)
inlineconstexprnoexcept

从可转换引用隐式转换构造

模板参数
U源引用类型
参数
value引用值

在文件 optional.hpp845 行定义.

引用了 _MSTL , 以及 value().

◆ optional() [4/8]

template<typename T>
template<typename U, enable_if_t<!is_convertible_v< U &, T & > &&is_constructible_v< T &, U & >, int > = 0>
optional< T & >::optional ( U & value)
inlineexplicitconstexprnoexcept

从可转换引用显式转换构造

模板参数
U源引用类型
参数
value引用值

在文件 optional.hpp853 行定义.

引用了 _MSTL , 以及 value().

◆ optional() [5/8]

template<typename T>
template<typename U, enable_if_t< convertible_from_optional_ref< U >::value, int > = 0>
optional< T & >::optional ( const _MSTL optional< U & > & other)
inlineconstexprnoexcept

从引用可选值隐式转换复制构造

模板参数
U源引用类型
参数
other源可选值

在文件 optional.hpp862 行定义.

引用了 _MSTL , 以及 optional().

◆ optional() [6/8]

template<typename T>
template<typename U, enable_if_t< !convertible_from_optional_ref< U >::value &&is_constructible_v< T &, U & >, int > = 0>
optional< T & >::optional ( const _MSTL optional< U & > & other)
inlineexplicitconstexprnoexcept

从引用可选值显式转换复制构造

模板参数
U源引用类型
参数
other源可选值

在文件 optional.hpp871 行定义.

引用了 _MSTL , 以及 optional().

◆ optional() [7/8]

template<typename T>
optional< T & >::optional ( const optional< T & > & other)
constexprdefaultnoexcept

复制构造函数

参数
other源可选值

引用了 optional().

◆ optional() [8/8]

template<typename T>
optional< T & >::optional ( optional< T & > && other)
inlineconstexprnoexcept

移动构造函数

参数
other源可选值

在文件 optional.hpp940 行定义.

引用了 optional().

成员函数说明

◆ and_then() [1/4]

template<typename T>
template<typename F>
decltype(auto) optional< T & >::and_then ( F && f) &
inlineconstexpr

左值然后操作

模板参数
F函数类型
参数
f函数对象
返回
函数处理存储的引用值并返回函数结果,或返回函数返回类型的默认构造类型

在文件 optional.hpp1115 行定义.

引用了 _MSTL , 以及 forward().

◆ and_then() [2/4]

template<typename T>
template<typename F>
decltype(auto) optional< T & >::and_then ( F && f) &&
inlineconstexpr

右值然后操作

模板参数
F函数类型
参数
f函数对象
返回
函数处理存储的引用值的移动并返回函数结果,或返回函数返回类型的默认构造类型

在文件 optional.hpp1139 行定义.

引用了 _MSTL, forward() , 以及 move().

◆ and_then() [3/4]

template<typename T>
template<typename F>
decltype(auto) optional< T & >::and_then ( F && f) const &
inlineconstexpr

常量左值然后操作

模板参数
F函数类型
参数
f函数对象
返回
函数处理存储的引用值并返回函数结果,或返回函数返回类型的默认构造类型

在文件 optional.hpp1103 行定义.

引用了 _MSTL , 以及 forward().

◆ and_then() [4/4]

template<typename T>
template<typename F>
decltype(auto) optional< T & >::and_then ( F && f) const &&
inlineconstexpr

常量右值然后操作

模板参数
F函数类型
参数
f函数对象
返回
函数处理存储的引用值的移动并返回函数结果,或返回函数返回类型的默认构造类型

在文件 optional.hpp1127 行定义.

引用了 _MSTL, forward() , 以及 move().

◆ emplace() [1/2]

template<typename T>
template<typename U, enable_if_t<!is_convertible_v< U &, T & > &&is_constructible_v< T &, U & >, int > = 0>
MSTL_CONSTEXPR20 T & optional< T & >::emplace ( U & value)
inlinenoexcept

显式转换原位构造引用

模板参数
U源引用类型
参数
value引用值
返回
存储的引用

在文件 optional.hpp981 行定义.

引用了 _MSTL, addressof() , 以及 value().

◆ emplace() [2/2]

template<typename T>
template<typename U, enable_if_t< is_convertible_v< U &, T & >, int > = 0>
MSTL_CONSTEXPR20 T & optional< T & >::emplace ( U & value)
inlinenoexcept

隐式转换原位构造引用

模板参数
U源引用类型
参数
value引用值
返回
存储的引用

在文件 optional.hpp969 行定义.

引用了 _MSTL, addressof() , 以及 value().

◆ operator bool()

template<typename T>
optional< T & >::operator bool ( ) const
inlineexplicitconstexprnoexcept

转换为布尔值

返回
是否持有引用

在文件 optional.hpp1000 行定义.

◆ operator*() [1/4]

template<typename T>
T && optional< T & >::operator* ( ) &&
inlineconstexprnoexcept

右值解引用运算符

返回
值的右值引用

在文件 optional.hpp1226 行定义.

◆ operator*() [2/4]

template<typename T>
T & optional< T & >::operator* ( ) &
inlineconstexprnoexcept

左值解引用运算符

返回
值的左值引用

在文件 optional.hpp1214 行定义.

◆ operator*() [3/4]

template<typename T>
const T && optional< T & >::operator* ( ) const &&
inlineconstexprnoexcept

常量右值解引用运算符

返回
值的常量右值引用

在文件 optional.hpp1220 行定义.

◆ operator*() [4/4]

template<typename T>
const T & optional< T & >::operator* ( ) const &
inlineconstexprnoexcept

常量左值解引用运算符

返回
值的常量左值引用

在文件 optional.hpp1208 行定义.

◆ operator->() [1/2]

template<typename T>
const T * optional< T & >::operator-> ( ) const
inlineconstexprnoexcept

常量箭头运算符

返回
指向值的常量指针

在文件 optional.hpp1196 行定义.

◆ operator->() [2/2]

template<typename T>
T * optional< T & >::operator-> ( )
inlineconstexprnoexcept

箭头运算符

返回
指向值的指针

在文件 optional.hpp1202 行定义.

◆ operator<()

template<typename T>
bool optional< T & >::operator< ( const optional< T & > & rhs) const
inlineconstexprnoexcept

小于比较运算符

参数
rhs右操作数
返回
当前值是否小于右操作数值

在文件 optional.hpp1245 行定义.

引用了 optional().

◆ operator=() [1/5]

template<typename T>
template<typename U, enable_if_t< is_assignable_v< T &, U & >, int > = 0>
MSTL_CONSTEXPR20 optional & optional< T & >::operator= ( const _MSTL optional< U & > & other)
inline

从引用可选值赋值

模板参数
U源引用类型
参数
other源可选值
返回
当前对象的引用

在文件 optional.hpp908 行定义.

引用了 _MSTL, addressof() , 以及 optional().

◆ operator=() [2/5]

template<typename T>
MSTL_CONSTEXPR20 optional & optional< T & >::operator= ( const optional< T & > & other)
defaultnoexcept

复制赋值运算符

参数
other源可选值
返回
当前对象的引用

引用了 optional().

◆ operator=() [3/5]

template<typename T>
MSTL_CONSTEXPR20 optional & optional< T & >::operator= ( none_t n)
inlinenoexcept

空值赋值运算符

参数
n空值标签
返回
当前对象的引用

取消对目标的引用

在文件 optional.hpp880 行定义.

引用了 optional().

◆ operator=() [4/5]

template<typename T>
MSTL_CONSTEXPR20 optional & optional< T & >::operator= ( optional< T & > && other)
inlinenoexcept

移动赋值运算符

参数
other源可选值
返回
当前对象的引用

在文件 optional.hpp947 行定义.

引用了 optional().

◆ operator=() [5/5]

template<typename T>
template<typename U = T, enable_if_t< is_assignable_v< T &, U & >, int > = 0>
MSTL_CONSTEXPR20 optional & optional< T & >::operator= ( U & value)
inline

从引用赋值

模板参数
U源引用类型
参数
value引用值
返回
当前对象的引用

在文件 optional.hpp892 行定义.

引用了 _MSTL, addressof(), optional() , 以及 value().

◆ operator==()

template<typename T>
bool optional< T & >::operator== ( const optional< T & > & rhs) const
inlineconstexprnoexcept

等于比较运算符

参数
rhs右操作数
返回
两个可选值是否相等

在文件 optional.hpp1233 行定义.

引用了 optional().

◆ or_else() [1/2]

template<typename T>
template<typename F, enable_if_t< is_invocable_v< F >, int > = 0>
optional optional< T & >::or_else ( F && f) &&
inlineconstexpr

右值否则操作

模板参数
F函数类型
参数
f函数对象
返回
引用存在时返回自身的移动,不存在时调用函数并返回结果

在文件 optional.hpp1091 行定义.

引用了 _MSTL, forward(), move() , 以及 optional().

◆ or_else() [2/2]

template<typename T>
template<typename F, enable_if_t< is_invocable_v< F >, int > = 0>
optional optional< T & >::or_else ( F && f) const &
inlineconstexpr

常量左值否则操作

模板参数
F函数类型
参数
f函数对象
返回
引用存在时返回自身的拷贝,不存在时调用函数并返回结果

在文件 optional.hpp1079 行定义.

引用了 _MSTL, forward() , 以及 optional().

◆ swap()

template<typename T>
MSTL_CONSTEXPR20 void optional< T & >::swap ( optional< T & > & other)
inlinenoexcept

交换两个可选值

参数
other要交换的可选值

在文件 optional.hpp1287 行定义.

引用了 _MSTL, optional() , 以及 swap().

◆ to_hash()

template<typename T>
size_t optional< T & >::to_hash ( ) const
inlineconstexprnoexcept

计算哈希值

返回
哈希值

在文件 optional.hpp1279 行定义.

引用了 _CONSTANTS.

◆ transform() [1/4]

template<typename T>
template<typename F>
auto optional< T & >::transform ( F && f) && -> _MSTL optional< remove_cvref_t< decltype(f(*ptr_))> >
inlineconstexpr

右值转换操作

模板参数
F函数类型
参数
f函数对象
返回
函数处理存储的引用值的移动并返回新的optional,或返回none的optional

在文件 optional.hpp1187 行定义.

引用了 _MSTL, forward(), move(), none , 以及 optional().

◆ transform() [2/4]

template<typename T>
template<typename F>
auto optional< T & >::transform ( F && f) & -> _MSTL optional< remove_cvref_t< decltype(f(*ptr_))> >
inlineconstexpr

左值转换操作

模板参数
F函数类型
参数
f函数对象
返回
函数处理存储的引用值并返回新的optional,或返回none的optional

在文件 optional.hpp1163 行定义.

引用了 _MSTL, forward(), none , 以及 optional().

◆ transform() [3/4]

template<typename T>
template<typename F>
auto optional< T & >::transform ( F && f) const && -> _MSTL optional< remove_cvref_t< decltype(f(*ptr_))> >
inlineconstexpr

常量右值转换操作

模板参数
F函数类型
参数
f函数对象
返回
函数处理存储的引用值的移动并返回新的optional,或返回none的optional

在文件 optional.hpp1175 行定义.

引用了 _MSTL, forward(), move(), none , 以及 optional().

◆ transform() [4/4]

template<typename T>
template<typename F>
auto optional< T & >::transform ( F && f) const & -> _MSTL optional< remove_cvref_t< decltype(f(*ptr_))> >
inlineconstexpr

常量左值转换操作

模板参数
F函数类型
参数
f函数对象
返回
函数处理存储的引用值并返回新的optional,或返回none的optional

在文件 optional.hpp1151 行定义.

引用了 _MSTL, forward(), none , 以及 optional().

◆ value() [1/4]

template<typename T>
T & optional< T & >::value ( ) &
inlineconstexpr

获取左值引用

返回
存储的左值引用
异常
optional_exception如果引用未存储

在文件 optional.hpp1019 行定义.

◆ value() [2/4]

template<typename T>
T && optional< T & >::value ( ) &&
inlineconstexpr

获取右值引用

返回
存储的右值引用
异常
optional_exception如果引用未存储

在文件 optional.hpp1043 行定义.

◆ value() [3/4]

template<typename T>
const T & optional< T & >::value ( ) const &
inlineconstexpr

获取常量左值引用

返回
存储的常量左值引用
异常
optional_exception如果引用未存储

在文件 optional.hpp1007 行定义.

被这些函数引用 emplace(), operator=(), optional(), optional(), value_or() , 以及 value_or().

◆ value() [4/4]

template<typename T>
const T && optional< T & >::value ( ) const &&
inlineconstexpr

获取常量右值引用

返回
存储的常量右值引用
异常
optional_exception如果引用未存储

在文件 optional.hpp1031 行定义.

◆ value_or() [1/2]

template<typename T>
template<typename U>
T optional< T & >::value_or ( U && value) &&
inlineconstexpr

取出存储的引用的移动值

参数
value引用不存在时返回的值
返回
引用存在时返回其值的移动,不存在时返回参数value

在文件 optional.hpp1067 行定义.

引用了 _MSTL, forward(), move() , 以及 value().

◆ value_or() [2/2]

template<typename T>
template<typename U>
T optional< T & >::value_or ( U && value) const &
inlineconstexpr

取出存储的引用的拷贝值

参数
value引用不存在时返回的值
返回
引用存在时返回其值的拷贝,不存在时返回参数value

在文件 optional.hpp1056 行定义.

引用了 _MSTL, forward() , 以及 value().


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