std::unique_ptr::operator<<
Материал из cppreference.com
<tbody>
</tbody>
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 ); |
(начиная с C++20) | |
Вставляет значение указателя, управляемого p, в выходной поток os.
Эквивалент os << p.get().
Эта перегрузка участвует в разрешении перегрузки, только если os << p.get() является допустимым выражением.
Параметры
| os | — | std::basic_ostream для вставки p
|
| p | — | указатель, который нужно вставить в os
|
Возвращаемое значение
os
Примечание
Если std::unique_ptr<Y, D>::pointer является указателем на символьный тип (например, когда Y равно 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
Смотрите также
| возвращает указатель на управляемый объект (public функция-элемент) |