NexusForce 1.0.0
A Modern C++ Library with extended functionality, web components, and utility libraries
载入中...
搜索中...
未找到
meta_any类 参考

类型擦除容器 更多...

#include <any.hpp>

Public 成员函数

 meta_any () noexcept=default
 默认构造函数
template<typename T, typename = enable_if_t<!is_same_v<decay_t<T>, meta_any>>>
 meta_any (T &&value)
 从任意值构造
 meta_any (const meta_any &other)
 拷贝构造函数
meta_anyoperator= (const meta_any &other)
 拷贝赋值运算符
NEFORCE_NODISCARD reflect::type_id type_id () const noexcept
 获取存储值的类型ID
NEFORCE_NODISCARD bool has_value () const noexcept
 检查是否包含值
 operator bool () const noexcept
 布尔转换运算符
template<typename T>
NEFORCE_NODISCARD T * cast () noexcept
 尝试转换为指定类型的指针
template<typename T>
NEFORCE_NODISCARD const T * cast () const noexcept
 尝试转换为指定类型的常量指针
template<typename T>
NEFORCE_NODISCARD T & get ()
 获取存储值的引用
template<typename T>
NEFORCE_NODISCARD const T & get () const
 获取存储值的常量引用
template<typename T>
NEFORCE_NODISCARD bool can_cast () const noexcept
 检查是否可以转换为指定类型
template<typename T>
NEFORCE_NODISCARD T convert () const
 转换为指定类型的值

详细描述

类型擦除容器

可以存储任意类型的值,并提供类型安全的存取接口。

在文件 reflect/any.hpp61 行定义.

构造及析构函数说明

◆ meta_any() [1/2]

template<typename T, typename = enable_if_t<!is_same_v<decay_t<T>, meta_any>>>
meta_any::meta_any ( T && value)
inlineexplicit

从任意值构造

模板参数
T值类型
参数
value要存储的值

在文件 reflect/any.hpp95 行定义.

引用了 forward(), make_unique() , 以及 meta_any().

◆ meta_any() [2/2]

meta_any::meta_any ( const meta_any & other)
inline

拷贝构造函数

参数
other源对象

在文件 reflect/any.hpp105 行定义.

引用了 meta_any().

成员函数说明

◆ can_cast()

template<typename T>
NEFORCE_NODISCARD bool meta_any::can_cast ( ) const
inlinenoexcept

检查是否可以转换为指定类型

模板参数
T目标类型
返回
可以转换返回true

在文件 reflect/any.hpp218 行定义.

引用了 cast().

◆ cast() [1/2]

template<typename T>
NEFORCE_NODISCARD const T * meta_any::cast ( ) const
inlinenoexcept

尝试转换为指定类型的常量指针

模板参数
T目标类型
返回
类型匹配返回指针,否则返回nullptr

在文件 reflect/any.hpp171 行定义.

引用了 type_name_v.

◆ cast() [2/2]

template<typename T>
NEFORCE_NODISCARD T * meta_any::cast ( )
inlinenoexcept

尝试转换为指定类型的指针

模板参数
T目标类型
返回
类型匹配返回指针,否则返回nullptr

在文件 reflect/any.hpp154 行定义.

引用了 type_name_v.

被这些函数引用 can_cast(), convert(), get() , 以及 get().

◆ convert()

template<typename T>
NEFORCE_NODISCARD T meta_any::convert ( ) const
inline

转换为指定类型的值

模板参数
T目标类型
返回
转换后的值
异常
typecast_exception类型不匹配时抛出

返回存储值的副本,而非引用。

在文件 reflect/any.hpp231 行定义.

引用了 cast() , 以及 unreachable().

◆ get() [1/2]

template<typename T>
NEFORCE_NODISCARD T & meta_any::get ( )
inline

获取存储值的引用

模板参数
T目标类型
返回
存储值的引用
异常
typecast_exception类型不匹配时抛出

在文件 reflect/any.hpp189 行定义.

引用了 cast() , 以及 unreachable().

◆ get() [2/2]

template<typename T>
NEFORCE_NODISCARD const T & meta_any::get ( ) const
inline

获取存储值的常量引用

模板参数
T目标类型
返回
存储值的常量引用
异常
typecast_exception类型不匹配时抛出

在文件 reflect/any.hpp204 行定义.

引用了 cast() , 以及 unreachable().

◆ has_value()

NEFORCE_NODISCARD bool meta_any::has_value ( ) const
inlinenoexcept

检查是否包含值

返回
包含值返回true

在文件 reflect/any.hpp140 行定义.

被这些函数引用 operator bool().

◆ operator bool()

meta_any::operator bool ( ) const
inlineexplicitnoexcept

布尔转换运算符

返回
包含值返回true

在文件 reflect/any.hpp146 行定义.

引用了 has_value().

◆ operator=()

meta_any & meta_any::operator= ( const meta_any & other)
inline

拷贝赋值运算符

参数
other源对象
返回
自身引用

在文件 reflect/any.hpp116 行定义.

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

◆ type_id()

NEFORCE_NODISCARD reflect::type_id meta_any::type_id ( ) const
inlinenoexcept

获取存储值的类型ID

返回
类型ID,空对象返回0

在文件 reflect/any.hpp134 行定义.


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