std::unique_ptr::operator<<
Материал из cppreference.com
< cpp | memory | unique ptr
template< class CharT, class Traits, class Y, class D > std::basic_ostream<CharT, Traits>& operator<<( std::basic_ostream<CharT, Traits>& os, |
(начиная с 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 функция-элемент) |