std::pointer_traits
Aus cppreference.com
![]() |
This page has been machine-translated from the English version of the wiki using Google Translate.
The translation may contain errors and awkward wording. Hover over text to see the original version. You can help to fix errors and improve the translation. For instructions click here. |
definiert in Header <memory>
|
||
template< class Ptr > struct pointer_traits; |
(1) | (seit C++11) |
template< class T > struct pointer_traits<T*>; |
(2) | (seit C++11) |
Die
1) pointer_traits
Klassen-Template bietet die standardisierte Möglichkeit, bestimmte Eigenschaften der Zeiger-ähnliche Typen zugreifen. Das Standard-Template std::allocator_traits setzt auf pointer_traits
, um die Standardeinstellungen für verschiedene typedefs bestimmen erfordert von Allocator
.Original:
The
pointer_traits
class template provides the standardized way to access certain properties of pointer-like types. The standard template std::allocator_traits relies on pointer_traits
to determine the defaults for various typedefs requires by Allocator
.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
Die nicht-spezialisierten
pointer_traits
erklärt die folgenden Typen:Original:
The non-specialized
pointer_traits
declares the following types:The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
Inhaltsverzeichnis |
[Bearbeiten] Mitglied Typen
Type
Original: Type The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. |
Definition |
pointer
|
Ptr |
element_type
|
Ptr::element_type falls vorhanden. Ansonsten
T wenn Ptr ist eine Vorlage Instanziierung Template<T, Args...> Original: Ptr::element_type if present. Otherwise T if Ptr is a template instantiation Template<T, Args...> The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. |
difference_type
|
Ptr::difference_type falls vorhanden, sonst std::ptrdiff_t
Original: Ptr::difference_type if present, otherwise std::ptrdiff_t The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. |
[Bearbeiten] Mitglied alias Vorlagen
Template
Original: Template The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. |
Definition |
template <class U> using rebind | Ptr::rebind<U> wenn vorhanden, sonst Tempate<U, Args...> wenn
Ptr ist eine Vorlage Instanziierung Template<T, Args...> Original: Ptr::rebind<U> if exists, otherwise Tempate<U, Args...> if Ptr is a template instantiation Template<T, Args...> The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. |
[Bearbeiten] Member-Funktionen
[statisch] |
erhält eine dereferencable Zeiger auf sein Argument Original: obtains a dereferencable pointer to its argument The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (public static Elementfunktion) |
Eine Spezialisierung ist für Zeigertypen,
T*
, die die folgenden Arten bereitgestellt erklärtOriginal:
A specialization is provided for pointer types,
T*
, which declares the following typesThe text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
[Bearbeiten] Mitglied Typen
Type
Original: Type The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. |
Definition |
pointer
|
T* |
element_type
|
T |
difference_type
|
std::ptrdiff_t |
[Bearbeiten] Mitglied alias Vorlagen
Template
Original: Template The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. |
Definition |
template< class U > using rebind | U* |
[Bearbeiten] Member-Funktionen
[statisch] |
erhält eine dereferencable Zeiger auf das Argument} Original: obtains a dereferencable pointer to its argument} The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (public static Elementfunktion) |
[Bearbeiten] Notes
Die rebind Elementtemplate Alias ist es möglich, da ein Zeiger-ähnliche Aktivität, die auf T, um die gleiche wie Typ-Zeiger, der auf U. Beispielsweise erhalten
Original:
The rebind member template alias makes it possible, given a pointer-like type that points to T, to obtain the same pointer-like type that points to U. For example,
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
std :: is_same <std :: pointer_traits <std :: shared_ptr <int>> :: rebind <double>, std :: unique_ptr <double>> :: value), "")
Original:
std::is_same<std::pointer_traits< std::shared_ptr<int>>::rebind<double>, std::unique_ptr<double> >::value), "")
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
[Bearbeiten] Beispiel
#include <memory> #include <iostream> template <class Ptr> struct BlockList { // Predefine a memory block struct block; // Define a pointer to a memory block from the kind of pointer Ptr s // If Ptr is any kind of T*, block_ptr_t is block* // If Ptr is smart_ptr<T>, block_ptr_t is smart_ptr<block> typedef typename std::pointer_traits<Ptr>::template rebind<block> block_ptr_t; struct block { std::size_t size; block_ptr_t next_block; }; block_ptr_t free_blocks; }; int main() { BlockList<int*> bl1; // The type of bl1.free_blocks is block* BlockList<std::shared_ptr<char>> bl2; // The type of bl2.free_blocks is std::shared_ptr<block> std::cout << bl2.free_blocks.use_count() << '\n'; }
Output:
0
[Bearbeiten] Siehe auch
(C++11) |
liefert Informationen über Allokatoren (Klassen-Template) |
(C++11) |
ermittelt die tatsächlichen Adresse eines Objekts, selbst wenn der Dereferenzierungsoperator überladen ist (Funktions-Template) |