Namespaces
Variants

std::unique_ptr<T,Deleter>:: operator<<

From cppreference.net
Memory management library
( exposition only* )
Allocators
Uninitialized memory algorithms
Constrained uninitialized memory algorithms
Memory resources
Uninitialized storage (until C++20)
( until C++20* )
( until C++20* )
( until C++20* )

Garbage collector support (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
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 - a 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

Смотрите также

возвращает указатель на управляемый объект
(публичная функция-член)