std::pointer_traits<Ptr>::pointer_to
Определён в заголовочном файле <memory> | ||
|---|---|---|
static pointer pointer_to( element_type& r ); | (1) | (начиная с C++11) (член специализации pointer_traits<Ptr>) |
static pointer pointer_to( element_type& r ) noexcept; | (2) |
(начиная с C++11) (до C++20) (член специализации pointer_traits<T*>)
|
static constexpr pointer pointer_to( element_type& r ) noexcept; |
(начиная с C++20) (член специализации pointer_traits<T*>)
|
Создаёт разыменовываемый указатель или объект, подобный указателю («хитроумный указатель»), на переданный аргумент.
1) Эта версия функции в неспециализированном шаблоне
std::pointer_traits просто вызывает Ptr::pointer_to(r); если Ptr не предоставляет статическую функцию-член pointer_to, инстанцирование этой функции приводит к ошибке компиляции.
2) Эта версия функции в специализации
std::pointer_traits для типов-указателей возвращает std::addressof(r).Параметры
| r | - | ссылка на объект типа element_type&, за исключением случая, когда element_type — void; в этом случае тип r не указан |
Возвращаемое значение
Разыменовываемый указатель на r типа pointer_traits<>::pointer.
Исключения
1) Не указаны (обычно совпадают с
Ptr::pointer_to).Примечания
Версия этой функции из библиотеки Boost.Intrusive возвращает pointer(std::addressof(r)), если Ptr::pointer_to не существует.
См. также
|
(C++11) | получает фактический адрес объекта, даже если оператор & перегружен (шаблон функции) |
|
(до C++20) | получает адрес объекта, даже если operator& перегружен (открытая функция-член std::allocator<T>) |
|
[static] (C++20)(необязательный) | получает обычный указатель из хитроумного указателя (обратная операция для pointer_to) (открытая статическая функция-член) |
|
(C++20) | получает обычный указатель из типа, подобного указателю (шаблон функции) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/memory/pointer_traits/pointer_to