Console Library 4.7.0
A header-only library that makes C++ simple
Loading...
Searching...
No Matches
console::Item Class Reference

可存储任意类型单个对象的类型擦除包装器。 More...

#include <box.h>

Public Member Functions

 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 Itemoperator= (const Item &other)
 拷贝赋值运算符。
const Itemoperator= (Item &&other) noexcept
 移动赋值运算符。
std::string str () const
 返回 Item 的字符串表示。
 ~Item ()
 析构函数,释放内部堆内存。

Friends

std::ostream & operator<< (std::ostream &os, const Item &item)
 Item 输出到流。

Detailed Description

可存储任意类型单个对象的类型擦除包装器。

采用经典的继承 + 虚函数方式实现类型擦除,不进行小对象优化。 支持拷贝、移动、类型安全访问和不安全访问。

Constructor & Destructor Documentation

◆ Item() [1/4]

console::Item::Item ( )
inline

默认构造一个空 Item(ptr 为 nullptr)。

◆ Item() [2/4]

template<typename T>
console::Item::Item ( T && value)
inline

从任意类型构造 Item(万能引用)。

Template Parameters
T推导出的数据类型(自动去除引用和 cv 限定)。
Parameters
value要存储的值(左值或右值)。

◆ Item() [3/4]

console::Item::Item ( const Item & other)
inline

拷贝构造函数。

Parameters
other源 Item。

◆ Item() [4/4]

console::Item::Item ( Item && other)
inlinenoexcept

移动构造函数。

Parameters
other源 Item(将被置于空状态)。

◆ ~Item()

console::Item::~Item ( )
inline

析构函数,释放内部堆内存。

Member Function Documentation

◆ get() [1/2]

template<typename T>
T & console::Item::get ( )
inline

类型安全地获取存储值的引用(非常量版本)。

Template Parameters
T期望的类型。
Returns
T& 存储值的引用。
Exceptions
console::bad_getItem 为空或实际类型与 T 不匹配。

◆ get() [2/2]

template<typename T>
const T & console::Item::get ( ) const
inline

类型安全地获取存储值的引用(常量版本)。

Template Parameters
T期望的类型。
Returns
const T& 存储值的常量引用。
Exceptions
console::bad_getItem 为空或实际类型与 T 不匹配。

◆ operator=() [1/2]

const Item & console::Item::operator= ( const Item & other)
inline

拷贝赋值运算符。

Parameters
other源 Item。
Returns
const Item& 返回 *this 的常量引用。

◆ operator=() [2/2]

const Item & console::Item::operator= ( Item && other)
inlinenoexcept

移动赋值运算符。

Parameters
other源 Item(将被置于空状态)。
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
os输出流。
item要输出的 Item。
Returns
std::ostream& 返回 os 以便链式调用。

The documentation for this class was generated from the following file: