可存储任意类型单个对象的类型擦除包装器。
More...
#include <box.h>
|
| | Item () |
| | 默认构造一个空 Item(ptr 为 nullptr)。
|
| template<typename T> |
| | Item (T &&value) |
| | 从任意类型构造 Item(万能引用)。
|
| | Item (const Item &other) |
| | 拷贝构造函数。
|
| | Item (Item &&other) noexcept |
| | 移动构造函数。
|
| template<typename T> |
| T & | get () |
| | 类型安全地获取存储值的引用(非常量版本)。
|
| template<typename T> |
| T & | unsafe_get () |
| | 不安全地获取存储值的引用(非常量版本)。
|
| template<typename T> |
| const T & | get () const |
| | 类型安全地获取存储值的引用(常量版本)。
|
| template<typename T> |
| const T & | unsafe_get () const |
| | 不安全地获取存储值的引用(常量版本)。
|
| const Item & | operator= (const Item &other) |
| | 拷贝赋值运算符。
|
| const Item & | operator= (Item &&other) noexcept |
| | 移动赋值运算符。
|
| std::string | str () const |
| | 返回 Item 的字符串表示。
|
| | ~Item () |
| | 析构函数,释放内部堆内存。
|
可存储任意类型单个对象的类型擦除包装器。
采用经典的继承 + 虚函数方式实现类型擦除,不进行小对象优化。 支持拷贝、移动、类型安全访问和不安全访问。
◆ Item() [1/4]
默认构造一个空 Item(ptr 为 nullptr)。
◆ Item() [2/4]
template<typename T>
| console::Item::Item |
( |
T && | value | ) |
|
|
inline |
从任意类型构造 Item(万能引用)。
- Template Parameters
-
| T | 推导出的数据类型(自动去除引用和 cv 限定)。 |
- Parameters
-
◆ Item() [3/4]
| console::Item::Item |
( |
const Item & | other | ) |
|
|
inline |
◆ Item() [4/4]
| console::Item::Item |
( |
Item && | other | ) |
|
|
inlinenoexcept |
◆ ~Item()
◆ get() [1/2]
template<typename T>
| T & console::Item::get |
( |
| ) |
|
|
inline |
类型安全地获取存储值的引用(非常量版本)。
- Template Parameters
-
- Returns
- T& 存储值的引用。
- Exceptions
-
◆ get() [2/2]
template<typename T>
| const T & console::Item::get |
( |
| ) |
const |
|
inline |
类型安全地获取存储值的引用(常量版本)。
- Template Parameters
-
- Returns
- const T& 存储值的常量引用。
- Exceptions
-
◆ operator=() [1/2]
| const Item & console::Item::operator= |
( |
const Item & | other | ) |
|
|
inline |
拷贝赋值运算符。
- Parameters
-
- Returns
- const Item& 返回 *this 的常量引用。
◆ operator=() [2/2]
| const Item & console::Item::operator= |
( |
Item && | other | ) |
|
|
inlinenoexcept |
移动赋值运算符。
- Parameters
-
- Returns
- const Item& 返回 *this 的常量引用。
◆ str()
| std::string console::Item::str |
( |
| ) |
const |
|
inline |
返回 Item 的字符串表示。
- Returns
- std::string 字符串形式。
◆ unsafe_get() [1/2]
template<typename T>
| T & console::Item::unsafe_get |
( |
| ) |
|
|
inline |
不安全地获取存储值的引用(非常量版本)。
- Template Parameters
-
| T | 期望的类型(必须与实际类型完全匹配,否则 UB)。 |
- Returns
- T& 存储值的引用。
- Warning
- 不进行任何类型检查或空指针检查,可能导致未定义行为。
◆ unsafe_get() [2/2]
template<typename T>
| const T & console::Item::unsafe_get |
( |
| ) |
const |
|
inline |
不安全地获取存储值的引用(常量版本)。
- Template Parameters
-
| T | 期望的类型(必须与实际类型完全匹配,否则 UB)。 |
- Returns
- const T& 存储值的常量引用。
- Warning
- 不进行任何类型检查或空指针检查,可能导致未定义行为。
◆ operator<<
| std::ostream & operator<< |
( |
std::ostream & | os, |
|
|
const Item & | item ) |
|
friend |
将 Item 输出到流。
- Parameters
-
- Returns
- std::ostream& 返回 os 以便链式调用。
The documentation for this class was generated from the following file: