NexusForce 1.0.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 _NEFORCE 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 _NEFORCE optional< U & > &other) noexcept
 从引用可选值显式转换复制构造
NEFORCE_CONSTEXPR20 optionaloperator= (none_t n) noexcept
 空值赋值运算符
template<typename U = T, enable_if_t< is_assignable_v< T &, U & >, int > = 0>
NEFORCE_CONSTEXPR20 optionaloperator= (U &value)
 从引用赋值
template<typename U, enable_if_t< is_assignable_v< T &, U & >, int > = 0>
NEFORCE_CONSTEXPR20 optionaloperator= (const _NEFORCE optional< U & > &other)
 从引用可选值赋值
constexpr optional (const optional &other) noexcept=default
 复制构造函数
NEFORCE_CONSTEXPR20 optionaloperator= (const optional &other) noexcept=default
 复制赋值运算符
constexpr optional (optional &&other) noexcept
 移动构造函数
NEFORCE_CONSTEXPR20 optionaloperator= (optional &&other) noexcept
 移动赋值运算符
 ~optional () noexcept
 析构函数
template<typename U, enable_if_t< is_convertible_v< U &, T & >, int > = 0>
NEFORCE_CONSTEXPR20 T & emplace (U &value) noexcept
 隐式转换原位构造引用
template<typename U, enable_if_t<!is_convertible_v< U &, T & > &&is_constructible_v< T &, U & >, int > = 0>
NEFORCE_CONSTEXPR20 T & emplace (U &value) noexcept
 显式转换原位构造引用
NEFORCE_CONSTEXPR20 void reset () noexcept
 重置引用
NEFORCE_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 &-> _NEFORCE optional< remove_cvref_t< decltype(f(*ptr_))> >
 常量左值转换操作
template<typename F>
constexpr auto transform (F &&f) &-> _NEFORCE optional< remove_cvref_t< decltype(f(*ptr_))> >
 左值转换操作
template<typename F>
constexpr auto transform (F &&f) const &&-> _NEFORCE optional< remove_cvref_t< decltype(f(*ptr_))> >
 常量右值转换操作
template<typename F>
constexpr auto transform (F &&f) &&-> _NEFORCE 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
 计算哈希值
NEFORCE_CONSTEXPR20 void swap (optional &other) noexcept
 交换两个可选值

详细描述

template<typename T>
class optional< T & >

引用可选值类模板

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

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

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

在文件 optional.hpp825 行定义.

构造及析构函数说明

◆ optional() [1/8]

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

默认构造函数

参数
n空值标签

在文件 optional.hpp846 行定义.

引用了 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.hpp852 行定义.

引用了 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.hpp861 行定义.

引用了 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.hpp870 行定义.

引用了 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 _NEFORCE optional< U & > & other)
inlineconstexprnoexcept

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

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

在文件 optional.hpp879 行定义.

引用了 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 _NEFORCE optional< U & > & other)
inlineexplicitconstexprnoexcept

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

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

在文件 optional.hpp888 行定义.

引用了 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.hpp958 行定义.

引用了 optional().

成员函数说明

◆ and_then() [1/4]

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

左值然后操作

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

在文件 optional.hpp1142 行定义.

引用了 forward().

◆ and_then() [2/4]

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

右值然后操作

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

在文件 optional.hpp1170 行定义.

引用了 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.hpp1128 行定义.

引用了 forward().

◆ and_then() [4/4]

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

常量右值然后操作

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

在文件 optional.hpp1156 行定义.

引用了 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>
NEFORCE_CONSTEXPR20 T & optional< T & >::emplace ( U & value)
inlinenoexcept

显式转换原位构造引用

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

在文件 optional.hpp998 行定义.

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

◆ emplace() [2/2]

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

隐式转换原位构造引用

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

在文件 optional.hpp986 行定义.

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

◆ operator bool()

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

转换为布尔值

返回
是否持有引用

在文件 optional.hpp1017 行定义.

◆ operator*() [1/4]

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

右值解引用运算符

返回
值的右值引用

在文件 optional.hpp1267 行定义.

◆ operator*() [2/4]

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

左值解引用运算符

返回
值的左值引用

在文件 optional.hpp1255 行定义.

◆ operator*() [3/4]

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

常量右值解引用运算符

返回
值的常量右值引用

在文件 optional.hpp1261 行定义.

◆ operator*() [4/4]

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

常量左值解引用运算符

返回
值的常量左值引用

在文件 optional.hpp1249 行定义.

◆ operator->() [1/2]

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

常量箭头运算符

返回
指向值的常量指针

在文件 optional.hpp1237 行定义.

◆ operator->() [2/2]

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

箭头运算符

返回
指向值的指针

在文件 optional.hpp1243 行定义.

◆ operator<()

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

小于比较运算符

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

在文件 optional.hpp1286 行定义.

引用了 optional().

◆ operator=() [1/5]

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

从引用可选值赋值

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

在文件 optional.hpp926 行定义.

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

◆ operator=() [2/5]

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

复制赋值运算符

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

引用了 optional().

◆ operator=() [3/5]

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

空值赋值运算符

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

取消对目标的引用

在文件 optional.hpp898 行定义.

引用了 optional().

◆ operator=() [4/5]

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

移动赋值运算符

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

在文件 optional.hpp966 行定义.

引用了 optional().

◆ operator=() [5/5]

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

从引用赋值

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

在文件 optional.hpp910 行定义.

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

◆ operator==()

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

等于比较运算符

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

在文件 optional.hpp1274 行定义.

引用了 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.hpp1114 行定义.

引用了 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.hpp1100 行定义.

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

◆ swap()

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

交换两个可选值

参数
other要交换的可选值

在文件 optional.hpp1314 行定义.

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

被这些函数引用 swap().

◆ to_hash()

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

计算哈希值

返回
哈希值

在文件 optional.hpp1306 行定义.

◆ transform() [1/4]

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

右值转换操作

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

在文件 optional.hpp1226 行定义.

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

◆ transform() [2/4]

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

左值转换操作

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

在文件 optional.hpp1198 行定义.

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

◆ transform() [3/4]

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

常量右值转换操作

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

在文件 optional.hpp1212 行定义.

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

◆ transform() [4/4]

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

常量左值转换操作

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

在文件 optional.hpp1184 行定义.

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

◆ value() [1/4]

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

获取左值引用

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

在文件 optional.hpp1036 行定义.

◆ value() [2/4]

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

获取右值引用

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

在文件 optional.hpp1060 行定义.

◆ value() [3/4]

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

获取常量左值引用

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

在文件 optional.hpp1024 行定义.

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

◆ value() [4/4]

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

获取常量右值引用

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

在文件 optional.hpp1048 行定义.

◆ value_or() [1/2]

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

取出存储的引用的移动值

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

在文件 optional.hpp1086 行定义.

引用了 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.hpp1073 行定义.

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


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