std::unique_ptr<T,Deleter>::operator<<
声明
自 C++20 起
template< class CharT, class Traits, class Y, class D >
std::basic_ostream<CharT, Traits>& operator<<( std::basic_ostream<CharT, Traits>& os,
const std::unique_ptr<Y, D>& p );
将 p
管理的指针的值插入到输出流 os
中。
等价于 os << p.get()
。
仅当 os << p.get()
是一个有效表达式时,此重载才参与重载解析。
参数
os
- 要将 p
插入其中的 std::basic_ostream
p
- 要插入 os
中的指针
返回值
os
备注
如果 std::unique_ptr<Y, D>::pointer
是指向字符类型的指针(例如,当 Y
是 char
或 char[]
或 CharT
时),这可能会调用针对空终止字符字符串的 operator<<
重载(如果指针实际上不指向此类字符串,则会导致未定义行为),而不是打印指针值本身的重载。
示例
#include <iostream>
#include <memory>
class Foo {};
int main()
{
auto p = std::make_unique<Foo>();
std::cout
<< p << '\n';
std::cout
<< p.get() << '\n';
}
可能结果
0x6d9028
0x6d9028