std::pointer_traits::pointer_to
Материал из cppreference.com
<tbody>
</tbody>
<tbody class="t-dcl-rev t-dcl-rev-num ">
</tbody><tbody>
</tbody>
| Определено в заголовочном файле <memory>
|
||
static pointer pointer_to( element_type& r ); |
(1) | (начиная с C++11) (элемент специализации pointer_traits<Ptr>) |
| (2) | ||
static pointer pointer_to( element_type& r ) noexcept; |
(начиная с 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& перегружен (public функция-элемент std::allocator)
|
[static] (C++20)(необязательно) |
получает сырой указатель из причудливого указателя (обратная pointer_to) (public static функция-элемент) |
(C++20) |
получает сырой указатель из типа, подобного указателю (шаблон функции) |