Пространства имён
Варианты
Действия

std::unique_ptr::operator<<

Материал из cppreference.com
< cpp‎ | memory‎ | unique ptr
 
 
Библиотека утилит
Языковая поддержка
Поддержка типов (базовые типы, RTTI)
Макросы тестирования функциональности библиотеки (C++20)    
Управление динамической памятью
Программные утилиты
Поддержка сопрограмм (C++20)
Вариативные функции
Трёхстороннее сравнение (C++20)
(C++20)
(C++20)(C++20)(C++20)(C++20)(C++20)(C++20)
Общие утилиты
Дата и время
Функциональные объекты
Библиотека форматирования (C++20)
(C++11)
Операторы отношения (устарело в C++20)
Целочисленные функции сравнения
(C++20)(C++20)(C++20)    
(C++20)
Операции обмена и типа
(C++14)
(C++11)
(C++11)
(C++11)
(C++17)
Общие лексические типы
(C++11)
(C++17)
(C++17)
(C++17)
(C++11)
(C++17)
(C++23)
Элементарные преобразования строк
(C++17)
(C++17)
 
Динамическое управление памятью
no section name
Ограниченные алгоритмы неинициализированной памяти
no section name
Поддержка сбора мусора
(C++11)(до C++23)
(C++11)(до C++23)
(C++11)(до C++23)
(C++11)(до C++23)
(C++11)(до C++23)
(C++11)(до C++23)



no section name
 
 
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 функция-элемент) [править]